|
|
|
|
 如何生成符号表 - Hillside [ 2006-04-26 17:14 | 226 byte(s)]
 Re: 如何生成符号表 - lonelyflyer [ 2006-04-27 11:10 | 1,048 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
书上说gdb加参数symbols <file> 可以从指定的文件中读取符号表。
请问
如何生成符号表文件?
另外加载特定符号表有什么用图?
是不是在加载符号表以后就不需要编译的时候加 -g?
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
基本上,据我所知(可能不尽然),symbol-file就是debug版的程序,也可以只是是保留了调试符号表的程序,可用后面的方法做一个。用这个功能可以用来调试没有调试信息的程序。不过前提是你要有相应的debug版本。
这个方式的主要意义,我想是可以处理release版本的core dump,还有就是可以attach到release版的进程,symbol-file调试信息,然后调试它。
编译内核时会有一个System.map文件,是用nm生成的,那个是否有这方面的用处,我不清楚,知道的朋友可以解释一下。
另外,其实更有意义些的,是分离的调试文件(seperate debug file),可以用这个方法发布程序。不过制作起来要麻烦些。
假定你有调试版本的haha:
#抽取调试信息
objdump --only-keep-debug haha haha.debug
#得到release版
strip haha
#增加到调试文件的引用
objdump --add-gnu-debuglink=haha.debug haha
用readelf -S haha,你可以看到release版的haha多了一个section,.gnu_debuglink,其内容是指向haha.debug,外加对齐和crc校验。
这样你调试haha的时候,会自动加载haha.debug中的调试信息
|
|
|
----
mount -o sync,dirsync
|
|
[Original]
[Print]
[Top]
|
|
|