我有一小段Windows代碼,基本上是從MSDN tutorial複製的一個,但適用於C++。我可以編譯它現在使用的方法之一:如何在Linux上正確調試交叉編譯的Windows代碼?
i686-w64-mingw32-g++ -g hello.cpp -o hello
產生本地Windows可執行PE32,wineg++ -g hello.cpp -o hello
產生libwine
包裝對hello.exe
+hello.exe.so
。
所有我現在想的是(如果可能的話gdb
或接口的話)可以在調試程序文件啓動,並在入口點WinMain
停止。我在這方面做得很糟糕。我曾嘗試(注:在下面,hello
沒有擴展,相當unconventially,Windows的可執行文件):
wine /usr/i686-w64-mingw32/sys-root/mingw/bin/gdbserver.exe :2000 hello
隨後target remote :2000
在本地gdb
:沒有發現任何符號可言,一切都是??
跨越10+堆棧幀wine /usr/i686-w64-mingw32/sys-root/mingw/bin/gdb.exe hello
:掛起,不接受該命令行gdb wine
隨後run hello
上的任何用戶輸入:Missing separate debuginfos, use: dnf debuginfo-install wine-core-1.9.19-1.fc24.i686
,我做到了,並錯誤仍gdb hello.exe.so
:導致SIGSEGV修改
hello.exe
腳本,以便它設置合適的環境,但速度到底gdb
:沒有任何符號,??
到處winedbg hello
與不--gdb
:得最遠到目前爲止,搭配黑色控制檯窗口開始,讓我一步,但無論是在我的代碼仍然是??
- 編出並WinMain
(或包含該字符串的任何東西)是未知的winedbg hello.exe
(對於wineg++
輸出):程序加載充分,調試器掛起等待它,而它已經在後臺運行在
winedbg
上運行應用程序並附加到它:不符合目的(不允許我在入口點停止),但除此之外大多數情況下最後兩點的作用(與輸出MinGW
一起使用,但不顯示任何內部結構爲hello.exe
,完全不工作,輸出wineg++
)。閱讀噸的官方和非官方的教程,錯誤報告,做題的......
我甚至不記得其他組合我試過了。肯定不會那麼難?