web-dev-qa-db-ja.com

main.cという名前のソースファイルはありません。 gdbブレークポイント設定

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番目の問題を回避しますか?

16
arslan

_-g_でコンパイルしてもブレークポイントを設定できない場合は、raise(SIGTRAP)main()に追加して、gdbでプロセスを実行してから、ブレークポイントを設定してください。 SIGTRAPに到達した後、もう一度欲しい。

2
wilywampa

.cファイルをコンパイルするときは、次のことを確認してください。

gcc filename.c -g 

gdb <binary name>

ロードされたデバッグシンボルを検索しましたか?

そうでない場合:

gdb) symbol-file <path-of-symbol-file>

あなたはobjディレクトリにシンボルファイルを見つけることができます

8
Sohil Omer

以前にも同様の問題に遭遇しました。 。metadataフォルダーを削除し、特定のプロジェクトを再度インポートしたところ、うまくいきました。

3
Kulwant Bhambra

重要なのは、コンパイル中のgccパラメータ-gです。

他のすべては二次的です。

GDBの ブレークポイントを参照してください

3
dyomas

GDBを使用する必要があるときはいつでも、コマンドラインで次のように入力します

gcc -g -o outputfile sourcefile.c

今タイプしてください

gdb -tui outputfile

次に、breakコマンドを入力します

1
user2430771