[英]gdb - get the real line of crash
我的多线程程序崩溃。 我有.core
文件。 我加载它并thread apply all backtrace
并为崩溃的线程获取以下输出:
Thread 1 (Thread 0x8567800 (runnable)):
#0 GG::serialize (this=0x847c180, outbin=@0xbf2f7c30)
at basic_string.h:269
好的,在序列化时崩溃,但是报告它发生在STL basic_string.h:269
。
但是如何在serialize()
函数中获取实际的崩溃行?
如果崩溃是可重现的,那么最简单的方法是在禁用内联的情况下重新编译错误代码(在g++
,这是-fno-inline
和-fno-default-inline
)。
如果必须分析您拥有的内核,请尝试查找string
中正在调用的方法,并在serialize
函数中找到相应的调用。
有时,除了反汇编函数并逐步浏览以找出汇编代码的哪些部分与源代码相对应之外,没有其他方法可以找到问题。 然后,要弄清楚局部变量的值,您必须执行info registers
,并跟踪将哪些值移入了哪个寄存器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.