Cプロジェクトのソースコードのデバッグにgdbを使用しています。私は示されているようにコンパイルします:
./configure --enable-debug CFLAGS="-g -o0"
make --debug=a
特定のファイルでデバッグを停止したい。だから私が使用してブレークポイントを設定すると
(gdb) break main.c:672
それは言う:
No source file named main.c.
特定の関数名(main.cファイル内)を渡してbreakした場合でも、それは言う:そのような関数は定義されていません。
現在のディレクトリには、このmain.cファイルがあります。 WindowsでCygwinを使用しています。を使用してブレークポイントを設定した場合
(gdb) break main
私のソースコードではなく、Cygwinファイルのメイン関数にブレークポイントを設定しました。
どうすれば最初の問題を解決できますか?
cygwinファイルと私のソースコード内に同じ関数名がある場合、好奇心が強い、どのように2番目の問題を回避しますか?
_-g
_でコンパイルしてもブレークポイントを設定できない場合は、raise(SIGTRAP)
をmain()
に追加して、gdbでプロセスを実行してから、ブレークポイントを設定してください。 SIGTRAP
に到達した後、もう一度欲しい。
.c
ファイルをコンパイルするときは、次のことを確認してください。
gcc filename.c -g
gdb <binary name>
ロードされたデバッグシンボルを検索しましたか?
そうでない場合:
gdb) symbol-file <path-of-symbol-file>
あなたはobjディレクトリにシンボルファイルを見つけることができます
以前にも同様の問題に遭遇しました。 。metadataフォルダーを削除し、特定のプロジェクトを再度インポートしたところ、うまくいきました。
GDBを使用する必要があるときはいつでも、コマンドラインで次のように入力します
gcc -g -o outputfile sourcefile.c
今タイプしてください
gdb -tui outputfile
次に、breakコマンドを入力します