如何阅读c++崩溃信息

How to read C++ crash info

本文关键字:信息 崩溃 c++ 何阅读      更新时间:2023-10-16

你好,我遇到了一些类似

的东西
*** glibc detected *** /usr/lib/R/bin/exec/R: double free or corruption (out): 0xb1f64430 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ebc2)[0xb73f3bc2]
/lib/i386-linux-gnu/libc.so.6(+0x6f862)[0xb73f4862]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0xb73f794d]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0xb684680f]
XXX.so(_XXXDXEv+0x30)[0xb66fab00]
...
/usr/local/lib/libboost_thread.so.1.46.1(thread_proxy+0x69)[0xb694a3a9]
/lib/i386-linux-gnu/libpthread.so.0(+0x6d31)[0xb7508d31]
/lib/i386-linux-gnu/libc.so.6(clone+0x5e)[0xb74570ce]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:05 11536433   /usr/lib/R/bin/exec/R
08049000-0804a000 r--p 00000000 08:05 11536433   /usr/lib/R/bin/exec/R
0804a000-0804b000 rw-p 00001000 08:05 11536433   /usr/lib/R/bin/exec/R
09c38000-0a885000 rw-p 00000000 00:00 0          [heap]
b1a00000-b1aae000 rw-p 00000000 00:00 0 
...

我只是想知道……关于XXX,在我自己的方法的最后,DxEv是什么?我所有的方法都有D0Ev, D1Ev或D2Ev ?这有什么意义吗?

那之后的0x30呢?这是类的字节数吗?还是函数地址?我能解决这个问题吗?

谢谢

_XXXDXEv是一个修改过的函数名-使用c++filt来修改它

(_XXXDXEv+0x30)表示回溯的级别为该函数的代码的48字节。

尝试在gdb下重新运行,或者如果有的话,在核心文件上运行gdb,以获得更多详细信息。

这是一个所谓的混乱的名称(即由编译器用参数和返回类型装饰)。您可以使用c++filt实用程序来获取函数签名。0x30是从开始到函数码流的偏移量,单位为字节。