LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1609|回复: 6

请教下add2line的问题

[复制链接]
发表于 2007-12-28 09:49:48 | 显示全部楼层 |阅读模式
“add2line - 将你要找的地址转成文件和行号,它要使用debug 信息”
请教怎样得到它需要的debug信息。

比如我在代码中有一段char buf[16]; buf[16] = 'A'
要怎样才能获得add2line所需要的信息?
发表于 2007-12-28 15:03:59 | 显示全部楼层
debug信息?
gcc -g -O0 -o xxx xxx.c
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 16:53:29 | 显示全部楼层
哈哈!应该不是这个debug信息,我觉得这儿的debug信息应该是指程序dump时pc寄存器和堆栈里的内容.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 17:02:15 | 显示全部楼层
x11,再请教一个问题,你知道像busybox这样的工程make menuconfig时出来的界面是怎样搞出来的吗?我看了下里面,好象调用一个可执行文件生成的. 有没有资料,google了下,找不到!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-18 10:40:26 | 显示全部楼层
add2line原来只要跟pc指针就行了。
一般程序被dump后,dump信息里会有pc的指针内容,只要将这个pc指针地址作为add2line的地址,就能很快找出被dump的代码的位置。这个在嵌入式的程序的调试中很有用。
用法:
add2line -e file [address...]
eg:add2line -e app.exe 0x00382316
上面app.exe为发生dump情况的程序,0x00382316为dump出来的pc指针地址,在pc上将这个命令执行一下就会得到出问题的代码的位置(文件名和行号)。
注意点:
编译的时候需加上-g选项,另外由于我们的c库文件是没有-g选项的,所以如果dump发生在c库函数里,那么这个方法就无能为力了。否则还是很好用的
回复 支持 反对

使用道具 举报

发表于 2008-1-18 23:43:26 | 显示全部楼层
make menuconfig的界面啊,在内核目录里make menuconfig的时候不是先编译了几个文件么,你说的可执行文件就是那些生成的吧,另外还有个叫dialog的,也可以用来做类似的界面吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-22 13:25:46 | 显示全部楼层
哈哈!现在我知道了,那个界面的东西是用Ncurse写出来的!没什么意思,不打算弄了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表