2014-01-29 51 views
0

我需要異步調試程序,因爲它熄火了,按Ctrl +ç殺死gdb,而不是中斷程序(這是對的MinGW/MSYS)。供應參數下gdbserver的程序上MSYS

Someone hintedgdb不會在異步模式下工作在Windows上,確實也沒有(與Asynchronous execution not supported on this target.消息),但gdbserver會。

所以我嘗試:(直供0作爲參數,根據how the manpage says it's done

$ gdbserver localhost:60000 ./a_.exe 0 
Process ./a_.exe created; pid = 53644 
Listening on port 60000 

然後在另一個終端:

$ gdb ./a_.exe 
(gdb) target remote localhost:60000 
Remote debugging using localhost:60000 
0x76fa878f in ntdll!DbgBreakPoint() from C:\Windows\system32\ntdll.dll 
(gdb) continue 
Continuing. 
[Inferior 1 (Remote target) exited with code 01] 

而原來現在看起來像:

$ gdbserver localhost:60000 ./a_.exe 0 
Process ./a_.exe created; pid = 53484 
Listening on port 60000 
Remote debugging from host 127.0.0.1 
Expecting 1 argument: test case number to run. 

Child exited with status 1 
GDBserver exiting 

也就是說,我的程序認爲它沒有任何參數。

manpage是錯的嗎?

回答

1

是的! 「誤導」是一個更合適的術語。 (具有誤導性,至少在此平臺上適用於此版本的gdbserver)。

第一個參數實際上是提供給下級的第一個參數(argv)。通常這是可執行文件的名稱。因此,下面的工作:

$ gdbserver localhost:60000 ./a_.exe whatever 0 

也就是說,聯機幫助應該說,是一致的:

target> gdbserver host:2345 emacs emacs foo.txt 
1

我不能幫你出gdbserver的,
但如果你是隻是在尋找一種方式來中斷的MinGW/MSYS GDB
運行的程序(類似按Ctrl +Linux下C
看看在Debugbreak

相關問題