1
我正在嘗試測試一個Vector類的實現,並試圖使用GDB來查看錯誤發生的位置。堆棧跟蹤中沒有函數名稱,GDB,但出現在LLDB中
當我用下面gcc -ggdb Vector.c TestVector.c
編譯,並隨後在GDB運行它,我得到以下作爲輸出(崩潰和試圖打印堆棧跟蹤後):
| => gdb ./a.out
Reading symbols from ./a.out...Reading symbols from /Users/prog/Desktop/Generics/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
done.
(gdb) r
Starting program: /Users/prog/Desktop/Generics/a.out
[New Thread 0x2703 of process 56984]
warning: unhandled dyld version (15)
Thread 2 received signal SIGSEGV, Segmentation fault.
0x00007fff65d97fe6 in ??()
(gdb) bt
#0 0x00007fff65d97fe6 in ??()
#1 0x00007ffeefbff640 in ??()
#2 0x00007fff65be4139 in ??()
#3 0x00007ffeefbff660 in ??()
#4 0x0000000000000000 in ??()
沒有特別有助於確定錯誤是由於回溯導致的,只顯示函數執行的絕對內存位置。
我的問題是,爲什麼GDB不給我準確的信息和LLDB做(儘管我不改變之間的編譯設置兩個調試會話),以及如何解決這個問題?
如果有任何幫助,我使用Mac OS X,High Sierra作爲我的操作系統。
這是已知的[Mac OS上的gdb錯誤](https://sourceware.org/bugzilla/show_bug.cgi?id=20981)。 – ks1322