gdb调试程序函数名为问号,啥原因?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb调试程序函数名为问号,啥原因?相关的知识,希望对你有一定的参考价值。

多线程程序运行一段时间产生core文件,gdb调试的时候显示发生了段错误,但定位不错段错误的位置,显示如下:[*]Program terminated with signal 11, Segmentation fault.[*]#0 0x47e10000 in ? ()[*](gdb) bt[*]#0 0x47e10000 in ? ()[*]#1 0x47e10000 in ? ()Backtrace stopped: previous frame identical to this frame (corrupt stack?)程序使用的动态库都已经通过set solib-absolute-prefix和set solib-search-path 命令设置好了,gdb的时候也没有提示找不到的符号之类的信息。但函数名却一直是问号,搞不懂什么原因。还有就是程序中没有递归调用为什么frame 0 与 frame 1的地址是一样的?除了使用gdb还有没有其他方法可以定位到出错的位置呢? 参考技术A 看你的错误提示,一般是内存操作错误了。如果内存使用不小心就是普通的strcmp都可能coredunp。出现问好,是你的程序调用的库,没有相应的符号表。
查看原帖>>
参考技术B 多线程程序运行一段时间产生core文件,gdb调试的时候显示发生了段错误,但定位不错段错误的位置

以上是关于gdb调试程序函数名为问号,啥原因?的主要内容,如果未能解决你的问题,请参考以下文章

解决gdb 调试 core 文件函数名显示为问号的问题

C++ gdb core调试 崩溃日志 都是问号??

解决gdb 调试 core 文件函数名显示为问号的问题

GDB调试C/C++程序命令整理

使用 gdb 7 对调试 Python 程序的支持需要啥?

gdb调试多进程多线程程序