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

385
13 сентября 2017, 13:48

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

Answer 1

Дебагер (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
READ ALSO
Длина адреса переменной (указателя)

Длина адреса переменной (указателя)

Неужели short int хватает чтобы записать такой длинный адрес переменной? Насколько мне известно, адреса должны выглядеть примерно так 0x7ffc079b67aeНеужели...

210
Рекурсивная функция С++ Фибоначчи [требует правки]

Рекурсивная функция С++ Фибоначчи [требует правки]

Написать функцию, которая возвращает сумму n чисел ФибоначчиЧисло n принимается в качестве аргумента, нужно без доп

223
Периметр треугольника [требует правки]

Периметр треугольника [требует правки]

Дайте решение задачи по вычислению площади треугольника плизНужно найти периметр треугольника с заданными пользователем значениями и определить...

287