2017-12-18 45 views
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 ??() 

enter image description here 特にないです私の関数の実行の絶対的なメモリ位置のみを表示するバックトレースによるエラーの原因を特定するのに役立ちます。

私はLLDBで同じタスクを実行すると、出力が少し明確である: enter image description here

私の質問は、なぜGDBは私に正確な情報とlldbを与えるものではありませんされては(私にもかかわらず、間のコンパイル設定を変更しません。 2つのデバッグセッション)、これをどのように修正できますか?

私はMac OS X、High Sierraを私のオペレーティングシステムとして使用しています。

+0

これは[Mac OSのgdbのバグ](https://sourceware.org/bugzilla/show_bug.cgi?id=20981)です。 – ks1322

答えて

3

gdbは、dyldによってプロセスにロードされている共有ライブラリを認識しません。あなたのgdb出力の先頭に "unhandled dyld version(15)"と書かれています。使用しているgdbがmacOS上で正しく動作するように更新する必要があるようです。私は最近、gdbのmacOSポートをどれくらい積極的に維持しているのか分かりません。

関連する問題