GDB Unknown Target Exception (при отладке 32-битной цели в 64-битной среде) - PullRequest
0 голосов
/ 16 июня 2020

Я хочу использовать отладчик GDB, поставляемый с 64-битной версией MinGW-w64 (x86_64-w64-mingw32), для отладки 32-битных целей, созданных с использованием 32-битной версии MinGW-w64 (x86_64-w64- mingw32). Согласно Отладка 32-битного приложения с помощью gdb в 64-битной среде , это вполне возможно. Я хочу сделать это, поскольку это упрощает мою настройку.

Однако я получаю следующие сообщения об ошибках из консоли отладки VS Code:

Связка "i386: x86-64 is несовместимо с целевой архитектурой i386 ":

1: (516) ->&"warning: `C:\\WINDOWS\\SYSTEM32\\ntdll.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.\n"
1: (516) ->=library-loaded,id="C:\\WINDOWS\\SYSTEM32\\ntdll.dll",target-name="C:\\WINDOWS\\SYSTEM32\\ntdll.dll",host-name="C:\\WINDOWS\\SYSTEM32\\ntdll.dll",symbols-loaded="0",thread-group="i1",ranges=[{from="0x30901000",to="0x30aef528"}]
1: (517) ->&"warning: `C:\\WINDOWS\\System32\\wow64.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.\n"
1: (517) ->=library-loaded,id="C:\\WINDOWS\\System32\\wow64.dll",target-name="C:\\WINDOWS\\System32\\wow64.dll",host-name="C:\\WINDOWS\\System32\\wow64.dll",symbols-loaded="0",thread-group="i1",ranges=[{from="0x2ec51000",to="0x2eca4560"}]
1: (518) ->&"warning: `C:\\WINDOWS\\System32\\wow64win.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.\n"
1: (518) ->=library-loaded,id="C:\\WINDOWS\\System32\\wow64win.dll",target-name="C:\\WINDOWS\\System32\\wow64win.dll",host-name="C:\\WINDOWS\\System32\\wow64win.dll",symbols-loaded="0",thread-group="i1",ranges=[{from="0x2f5d1000",to="0x2f64c654"}]
..........
1: (686) ->&"warning: `C:\\mingw64\\bin\\libstdc++-6.dll': Shared library architecture i386:x86-64 is not compatible with target architecture i386.\n"
1: (687) ->=library-loaded,id="C:\\mingw64\\bin\\libstdc++-6.dll",target-name="C:\\mingw64\\bin\\libstdc++-6.dll",host-name="C:\\mingw64\\bin\\libstdc++-6.dll",symbols-loaded="0",thread-group="i1",ranges=[{from="0x6fc41000",to="0x6fdfaec8"}]
1: (799) ->=library-loaded,id="C:\\mingw32\\bin\\libgcc_s_dw2-1.dll",target-name="C:\\mingw32\\bin\\libgcc_s_dw2-1.dll",host-name="C:\\mingw32\\bin\\libgcc_s_dw2-1.dll",symbols-loaded="0",thread-group="i1",ranges=[{from="0x6eb41000",to="0x6eb658f4"}]
1: (815) ->=library-unloaded,id="C:\\mingw64\\bin\\libstdc++-6.dll",target-name="C:\\mingw64\\bin\\libstdc++-6.dll",host-name="C:\\mingw64\\bin\\libstdc++-6.dll",thread-group="i1"
=library-unloaded,id="C:\\mingw64\\bin\\libstdc++-6.dll",target-name="C:\\mingw64\\bin\\libstdc++-6.dll",host-name="C:\\mingw64\\bin\\libstdc++-6.dll",thread-group="i1"

и этим неизвестным целевым исключением и неизвестным сигнальным сообщением:

gdb: unknown target exception 0x4000001f at 0x4016a6
1: (1003) ->~"\nThread "

Thread 
1: (1003) ->~"1 received signal ?, Unknown signal.\n"
1 received signal ?, Unknown signal.
1: (1003) ->~"0x0009dfb8 in ?? ()\n"
0x0009dfb8 in ?? ()
1: (1003) ->*stopped,reason="signal-received",signal-name="?",signal-meaning="Unknown signal",frame={addr="0x0009dfb8",func="??",args=[],arch="i386"},thread-id="1",stopped-threads="all"

, при этом все потоки, по-видимому, впоследствии останавливаются.

Я не уверен, какие предупреждения вызывают проблему, но когда я пытаюсь выполнить отладку в VS Code, моя программа hello world просто зависает, ничего не выводя на консоль и не попадая ни в какие точки останова.

Я могу успешно выполнить отладка с использованием 64-битного отладчика с 64-битной целью. В чем может быть проблема с 32-разрядной версией?

Моя версия MinGW - 7.0.0, а соответствующая версия G CC - 10.1.0 (загружена с http://winlibs.com/)

...