#c #debugging #gdb #eclipse-cdt #disassembly
#c #отладка #gdb #eclipse-cdt #разборка
Вопрос:
У меня есть следующая программа на C.
// main.c
int main(void) {
int x = 10;
int y = 20;
return 0;
}
Когда я выполняю разборку с помощью отладчика Visual Studio 2019 в Windows, я вижу следующий вывод, в котором показан код C, за которым следуют соответствующие инструкции.
7: int x = 10;
mov dword ptr [rbp 4],0Ah
8: int y = 20;
mov dword ptr [rbp 24h],14h
9: int z = x y;
Когда я выбираю Show Symbol Names
из контекстного меню, вызываемого правой кнопкой мыши, адреса в стеке отображаются как соответствующие им имена переменных (например, [rbp 4]
отображается как [x]
).
7: int x = 10;
mov dword ptr [x],0Ah
8: int y = 20;
mov dword ptr [y],14h
Я хотел бы включить аналогичную функциональность при отладке в Eclipse 2020-09 с CDT 10.0.0.202009071455 в Linux. Я компилирую с gcc -g main.c
помощью .
При пошаговом выполнении дизассемблирования отображается следующее, независимо от того Show Symbols
, выбрано ли оно в контекстном меню, вызываемом правой кнопкой мыши.
int x = 20;
mov DWORD PTR [rbp-0x8],0xa
int y = 30;
mov DWORD PTR [rbp-0xc],0x14
Есть ли какой-нибудь способ, например, [rbp-0xc]
отображать как [y]
, как это было бы в Visual Studio? Я попытался выполнить разборку gdb
напрямую, и я столкнулся с той же проблемой, когда вместо меток отображаются адреса. Есть ли какая-то опция в дополнение к -g
той, которую мне нужно использовать при компиляции? Я пробовал оба gcc
и clang
.