2011-10-25 65 views
3

嗨,我面臨着沿如何閱讀C++崩潰信息

*** 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呢?這是我的班級中的字節數嗎?或者一個函數地址?我能否以某種方式解決它?

感謝

回答

3

_XXXDXEv是一個錯位的函數名 - 使用c++filt來還原函數它。

(_XXXDXEv+0x30)表示回溯級別爲該函數的代碼中的48個字節。

嘗試在gdb下重新運行,或者在覈心文件上運行gdb(如果有的話),以獲取更多詳細信息。

2

這是一個所謂的mangled名稱(即由編譯器用參數和返回類型裝飾)。您可以使用c++filt實用程序取回功能簽名。 0x30是功能碼流從起始位置開始的偏移量,以字節爲單位。