после попытки пары альтернатив для отладки exe довольно неудачно решил попробовать gdb для отладки исполняемого файла на окнах env.отладка exe с помощью gdb
В, которые используются, чтобы скомпилировать ехе выглядеть следующим образом
/nologo /Z7 /Zi /MT /W3 /GX /O2 /D /DEBUG
Эти опции параметры, которые я использую, чтобы загрузить исполняемый файл в БГД
target exec setup
run -debug (this is the option against which I would like to perform some debugging)
Мне нужен способ либо загрузите источник/символы в 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.
Это происходит из-за вышеуказанных ошибок, я понимаю, что исполняемый файл не компилируется с параметрами отладки, так что там НКУ -g эквивалент в БГД или есть лучший способ загрузки с символами/исходный код в gdb.
Edit 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.
Эти варианты, которые вы упомянули, предназначены для cl, а не gcc? Если да, то почему вы не используете windbg или отладчик внутри Visual Studio? Они могли бы лучше справиться с отладкой двоичного файла Windows – stijn
@stijn да варианты, которые я упомянул, для CL, а не для gcc, я пробовал с windbg (понял, что в командном окне отображаются инструкции уровня сборки, которые я не понять, и поскольку частные символы не были загружены, мне не удалось установить точки останова там, где они увядают). Уровень комфорта немного выше с помощью gdb. К сожалению, у нас есть exe, который также должен поддерживаться – bhavs
Поскольку у вас есть cl, у вас, вероятно, есть VS (если вы не использовали один из этих совершенно новых «просто инструментов C++ toolset»)? Я уверен, что уровень комфорта его отладчика похож на gdb's, за исключением того, что все это в gui, а не в командной строке. – stijn