いくつかの代替案を試してみて、exeをデバッグしようとするとかなりうまくいきませんでした。これらは、私はgdbのgdbを使用してexeをデバッグする
target exec setup
run -debug (this is the option against which I would like to perform some debugging)
に実行可能ファイルをロードするために使用していますオプションですexeファイルをコンパイルするために使用されている
のオプションは、この
/nologo /Z7 /Zi /MT /W3 /GX /O2 /D /DEBUG
のように見える私はへの道を必要としますそうでなければ有効なブレークポイントを設定することができないので、ソース/シンボルをGDBにロードしてください。
これは私が実行可能ファイルをロードするためにこれを試みた
(gdb) set breakpoint pending on
(gdb) break runInstaller.c:6318
No symbol table is loaded. Use the "file" command.
Breakpoint 2 (runInstaller.c:6318) pending.
(gdb) pwd
Working directory C:\
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y <PENDING> WinMain
2 breakpoint keep y <PENDING> runInstaller.c:6318
(通常の方法以外)ブレークポイントを設定するために、試みたものです。
(gdb) file setup
Reading symbols from setup...(no debugging symbols found)...done.
それは私が実行をデバッグオプションでコンパイルされていないことを認識し、上記のエラーに起因するものであるので、それはGCC -g GDBにおける同等又はシンボル/ソースコードをロードするより良い方法のSが存在しますgdbに入れます。
編集1: 私は次のエラーが表示ブレークポイントを追加しようとするたびに:
(gdb) b main_helper
Function "main_helper" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 5 (main_helper) pending.
gccではなくclのオプションがありますか?もしそうなら、なぜVisual Studio内でwindbgやデバッガを使用しないのですか?彼らはWindowsのバイナリをデバッグする上でより良い仕事をするかもしれない。 – stijn
@stijnはい私が言及したオプションはCL用でgcc用ではないが、私はwindbgで試した。(コマンドウィンドウには、分かります。プライベートシンボルがロードされていないので、ブレークポイントを設定できませんでした。)gdbでは、快適度はやや高くなっています。残念ながら、私たちはEXEをサポートする必要があります – bhavs
あなたはclを持っているので、あなたはVSを持っている可能性があります(あなたがそれらの新しい「ただのC++ツールセット」のものを使用していない限り)?私は、デバッガの快適さのレベルはgdbのそれと似ているとはかなり確信していますが、コマンドライン上ではなくGUI内にあります。 – stijn