Отладка exe с использованием GDB

После нескольких неудачных попыток отладки exe-файла решил попробовать gdb для отладки исполняемого файла в среде Windows.

Параметры, которые используются для компиляции exe, выглядят так

/nologo /Z7  /Zi /MT /W3 /GX /O2 /D /DEBUG

Это параметры, которые я использую для загрузки исполняемого файла в GDB

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.

Именно из-за вышеуказанных ошибок я понимаю, что исполняемый файл не скомпилирован с параметрами отладки, поэтому в gdb есть эквивалент gcc -g или есть лучший способ загрузки символов / исходного кода в gdb.

Изменить 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.

1 ответ

Установочный файл, который вы используете в данный момент, не имеет таблицы символов, необходимой для отладки. Когда вы генерируете исполняемый двоичный файл, вам также необходимо сгенерировать таблицу символов. Ex. когда мы генерируем исполняемый файл для программы ac, мы компилируем аргумент -g.

gcc setup.c -o setup -g 

-g говорит компилятору gcc сгенерировать таблицу символов.

Другие вопросы по тегам