2016-05-20 17 views
0

いくつかの代替案を試してみて、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. 
+1

gccではなくclのオプションがありますか?もしそうなら、なぜVisual Studio内でwindbgやデバッガを使用しないのですか?彼らはWindowsのバイナリをデバッグする上でより良い仕事をするかもしれない。 – stijn

+0

@stijnはい私が言及したオプションはCL用でgcc用ではないが、私はwindbgで試した。(コマンドウィンドウには、分かります。プライベートシンボルがロードされていないので、ブレークポイントを設定できませんでした。)gdbでは、快適度はやや高くなっています。残念ながら、私たちはEXEをサポートする必要があります – bhavs

+0

あなたはclを持っているので、あなたはVSを持っている可能性があります(あなたがそれらの新しい「ただのC++ツールセット」のものを使用していない限り)?私は、デバッガの快適さのレベルはgdbのそれと似ているとはかなり確信していますが、コマンドライン上ではなくGUI内にあります。 – stijn

答えて

0

現在使用しているセットアップファイルをデバッグするために必要なシンボルテーブルを持っていません。実行可能バイナリを生成するときには、シンボルテーブルも生成する必要があります。 Ex。 Cプログラムの実行ファイルを生成するときに、引数-gを指定してコンパイルします。

gcc setup.c -o setup -g 

-gは、シンボルテーブルを生成するようにgccコンパイラに指示します。

+0

はい、私はそれを認識していますが、私はWindowsコンパイラを使用しているので、Windowsのgcc -gと同等のオプションはわかりません。 – bhavs

+0

どのコンパイラを使用していますか? –

+0

私はintelコンパイラを使用しています – bhavs

関連する問題