現在、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 ??()
特にないです私の関数の実行の絶対的なメモリ位置のみを表示するバックトレースによるエラーの原因を特定するのに役立ちます。
私はLLDBで同じタスクを実行すると、出力が少し明確である:
私の質問は、なぜGDBは私に正確な情報とlldbを与えるものではありませんされては(私にもかかわらず、間のコンパイル設定を変更しません。 2つのデバッグセッション)、これをどのように修正できますか?
私はMac OS X、High Sierraを私のオペレーティングシステムとして使用しています。
これは[Mac OSのgdbのバグ](https://sourceware.org/bugzilla/show_bug.cgi?id=20981)です。 – ks1322