Страницы

Поиск по вопросам

четверг, 18 апреля 2019 г.

Дизассемблирование кода в codeblocks

Здравствуйте! Подскажите, пожалуйста, как дизассемблировать код в codeblocks?


Ответ

Дебагер (gdb 8.0) из текущей поставки mingw-w64 (который i686-7.1.0-release-posix-dwarf-rt_v5-rev2.7z) при отладке С++ кода у меня зависает (при отладке С такого не наблюдается), возможно и у вас такая же проблема и поэтому окно Disassembly пустое.
Попробуйте поставить рядом более старую версию mingw-w64 и указать в настройках CodeBlocks чтобы он использовал gdb из той сборки.
Зайдите в настройки дебагера (Меню - Settings - Debugger), создайте новую конфигурацию (GDB/CDB Debugger - Create config) и укажите путь к нужному gdb.exe:

Так же, CodeBlocks может выводить ассемблерный код в двух форматах AT&T и Intel. Это настраивается тут же, в свойствах дебагера - Choose diassembly flavor (GDB only)
После того, как вы добавили новый дебагер, вы можете переключаться между ними через Меню - Debug - Active debuggers

Инструкция о том, как увидеть ассемблерный код:
В качестве Build target выбрать Debug: Меню - Build - Select target - Debug Сделать Rebuild проекта: Меню - Build - Rebuild (Ctrl+F11) Если проект собрался успешно, поставить брекпоинт на строке кода и запустить отладку: Меню - Debug - Start /Continue (F8) После этого запустится дебагер и остановится на вашем брекпоинте. В этот момент и можно посмотреть дизассемблированный код: Меню - Debug - Debugging windows - Disassembly

При этом, в логе на вкладке Debugger, будут примерно вот такие строчки:
Starting debugger: C:\dev\mingw-w64_5.3.0\bin\gdb.exe -nx -fullname -quiet -args B:/test/bin/Debug/test.exe done Registered new type: wxString Registered new type: STL String Registered new type: STL Vector Setting breakpoints Debugger name and version: GNU gdb (GDB) 7.10.1 Child process PID: 4044 At B:\test\main.cpp:7

Комментариев нет:

Отправить комментарий