1. ホーム
  2. c

[解決済み] main.c という名前のソースファイルがない gdb のブレークポイント設定

2022-02-11 12:11:59

質問内容

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のファイルのメイン関数にブレークポイントが設定されました。

  1. 最初の問題はどうすれば解決できますか?

  2. Cygwinのファイルと私のソースコードに同じ関数名がある場合、2番目の問題を回避する方法を教えてください。

解決方法は?

でコンパイルしている場合 -g を追加して、ブレークポイントを設定することができます。 raise(SIGTRAP) の中に main() に当たった後、gdbでプロセスを実行し、再度必要なブレークポイントを設定します。 SIGTRAP .