作者tkcn (小安)
看板AndroidDev
标题Re: [问题] debug + trace code
时间Fri May 11 21:32:11 2012
※ 引述《yshihyu (yshihyu)》之铭言:
: 目前工作是做android 手机 , 在实体手机开发,编译後image烧到手机里面
: 我是弄 kernel & driver 部分, 我目前都用 kernel log 讯息在trace code & debug
: 但是有点麻烦是常常需要编译好在烧到手机,之後再操作产生log 讯息
: 在分析log ... 每一次都花费15~20分钟 非常耗费时间
: 不知道大家都是怎麽做的?
: 像我这种情况可以用gdb 除错吗?
: 实体手机(target) ~ 电脑(host) 之间有办法使用gdb吗?
: 谢谢
我目前工作中有一部份内容跟你差不多,
也一直很想知道 gdb 是否能用在 Android Kernel 上,
不过一直没有成功。
讲一下我目前的状况:
1. 使用 module
我比较需要关注的 driver 等,我会修改自己 local 端的 code,使其成为 module,
需要 debug 时就可以修改後只编译该 module。
2. Kprobe
有点像是 hook 的感觉,写一个 module 并注明自己关注的 function,
载入後每次执行该 function 之前就会先执行 module 中的 pre_handler,
另外也可取得参数等资料。
3. FTrace
取得指定 function 的 call graph 等资讯。
不过我个人使用时经常发生当机状况,不确定是否是我这边机子的问题。
猜测使用 uart 时会好一点。
4. kgdb, kgtp 等
这边是我一直没头绪的部份。
不过由於我只能从 usb 透过 adb 进行操作,
我猜测这种情况下需要解决的问题可能会更多,
也许使用 uart 比较有机会。
5. debugfs, kernel module parameters
如果要追的不是自己人写的 code (?),
其实系统中很多地方都有埋下方便 debug 的设计,
有时候只要开启对应的 kernel config,
就会多印出很多讯息或长出 debugfs,
我从以前就一直对 kernel 很不熟,
如果有说错的地方还请不吝指正。
如果还有其他好用工具也希望能顺便指点一下 :p
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.231