Gdb и доллары в идентификаторах - PullRequest
6 голосов
/ 02 февраля 2020

Я бы хотел отладить программу, которая использует доллары в расширении идентификаторов.

Взять

#include <stdio.h>
int main()
{
    int $a = 42, b= 43;
    printf("%d %d\n", $a, b);
}

для упрощенного примера. Если я запускаю его под GDB, я могу проверить b, используя p b, но для p $a я получу void. Я могу показать значение только с помощью info locals.

Есть ли способ сослаться на $ -содержащие идентификаторы в gdb?

1 Ответ

3 голосов
/ 02 февраля 2020

gdb интерпретирует начальные значения $ в p $a перед синтаксическим анализом выражения для печати. ​​

Однако обратите внимание, что он делает это только для начальных значений $: если появляется знак $ в середине символа (например: p a$1) переменная печатается правильно.

Обходной путь для локальных переменных, имя которых начинается со знака доллара, - печатать все локальные переменные с

info locals
...