問題
嘗試除錯在 VSCode 中hello world使用交叉編譯的 win 應用程式。i686-w64-mingw32-g -posix但是 VSCode 無法附加到 dbgserver。
回購
VSCode 專案 repo 位于這里。
設定
在 nix 上交叉編譯 win 應用程式
編譯器配置為分別使用i686-w64-mingw32-gcc-posix和i686-w64-mingw32-g -posix用于 C 和 CXX 代碼。
構建 cmake 專案會生成./build/hello.exe可以使用 command 運行的專案wine ./build/hello.exe。
將 gdb 附加到 gdbserver
根據使用命令運行 gdbserver
并使用命令附加除錯器的建議。為方便起見,添加了sh 腳本/usr/bin/gdbserver。wine Z:/usr/share/win32/gdbserver.exe localhost:3456 /workspace/build/hello.exe/usr/bin/i686-w64-mingw32-gdb --eval-command='target remote 127.0.0.1:3456' /workspace/build/hello.exewine Z:/usr/share/win32/gdbserver.exe $@
作業正常。除錯器加載符號,列印以下輸出:
...
Type "apropos word" to search for commands related to "word"...
Reading symbols from /workspace/build/hello.exe...done.
Remote debugging using 127.0.0.1:3456
Reading C:/windows/system32/ntdll.dll from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading C:/windows/system32/kernel32.dll from remote target...
Reading C:/windows/system32/kernelbase.dll from remote target...
Reading C:/windows/system32/msvcrt.dll from remote target...
0x7bc51a41 in DbgBreakPoint@0 () from target:C:/windows/system32/ntdll.dll
(gdb)
在這一點上,一切看起來都很好。
配置 VSCode
為了設定 VSCode 除錯器,launch.json檔案添加了自定義路徑和引數來運行 gdb 和 gdbserver,如下所示。
使用 VSCode 進行除錯
啟動除錯配置會啟動一個程序,但似乎沒有進展到預期的除錯場景。一旦達到除錯服務器啟動超時,就會Unable to start debugging. No process is associated with this object.彈出訊息并停止除錯。
值得注意的是,在達到超時之前,運行
/usr/bin/i686-w64-mingw32-gdb --eval-command='target remote 127.0.0.1:3456' /workspace/build/hello.exe會將除錯器附加到由 VSCode 啟動的 gdbserver 行程。
uj5u.com熱心網友回復:
缺少一些 gdbserver 配置
更改后運行 wine app 的 dbgserver 作業正常。32 位葡萄酒應用程式 acn 的樣板專案可在此處找到。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491898.html
