当前位置: 技术问答>linux和unix
求教:程序运行时core掉,用gdb察看core显示no debugging symbols是什么原因
来源: 互联网 发布时间:2016-05-09
本文导语: 编译时已经加了-g选项了,怎么会显示no debugging symbols | 你有生成core文件吗? core文件的生成开关和大小限制 --------------------------------- 1)使用ulimit -c命令可查看core文件的生成开关。若结果...
编译时已经加了-g选项了,怎么会显示no debugging symbols
|
你有生成core文件吗?
core文件的生成开关和大小限制
---------------------------------
1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
2) 使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。
gdb -c core, 进去后键入 where命令, 就可以 show 出你是在程序哪一行当掉的, 还有在当掉时在哪个 function 里, 这个 function 是被哪个 function 所 call 的, 而这个 function 又是被哪个 function 所 call 的.... 一直到 main() 由这个信息, 可以找出五六成的 bug........ 屡试不爽 但, 先决条件, 当你在 compile 时必须把 debug information(gcc –g..) 的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。
core文件的生成开关和大小限制
---------------------------------
1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
2) 使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。
gdb -c core, 进去后键入 where命令, 就可以 show 出你是在程序哪一行当掉的, 还有在当掉时在哪个 function 里, 这个 function 是被哪个 function 所 call 的, 而这个 function 又是被哪个 function 所 call 的.... 一直到 main() 由这个信息, 可以找出五六成的 bug........ 屡试不爽 但, 先决条件, 当你在 compile 时必须把 debug information(gcc –g..) 的选项打开 不然, 就会出现一大堆你看不懂的东西,而不是你喜欢的源程序。
|
怀疑是编译末尾对程序strip了
|
是不是编译好的文件被trim了,会把符号去掉的
|
加了程序名没有?
gdb 程序名 core
gdb 程序名 core
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。