Как сказать GCC испускать определенный символ отладки, названный мной? - PullRequest
1 голос
/ 26 мая 2011

Я пишу сканер с отслеживанием состояния и хочу иметь символ отладки для каждого изменения состояния.

В моем коде я вызываю, например, макрос SETSTATE(ST_xxx), который делает некоторые неприятные вещи, НО я мог бытакже легко указать GCC, что в этот момент нужно выдать определенный символ отладки на основе этого имени ST_xxx.

Что мне нужно сделать, это установить точку останова в GDB.

Я полагаю, что это должно быть#pragma или что-то еще.

Если бы я только знал, как ...

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Хотя я мог бы неправильно понять вопрос, как насчет создания фиктивной функции и вызова ее в SETSTATE, затем установить точку останова в этой функции?
Например:

void dummy_breakpoint() {}

#define SETSTATE(st) dummy_breakpoint(); ...usual process...

Установка break dummy_breakpoint в .gdbinit может помочь в экономии труда.

EDIT:
Как насчет установки точки наблюдения в SETSTATE, как показано ниже, и настройка watch dummy_variable в .gdbinit?

char dummy_variable; /* global variable */

#define SETSTATE(st) ++ dummy_variable; ...usual process...

Однако это может замедлить выполнение программы, если среда не обеспечивает аппаратную точку наблюдения ...

0 голосов
/ 01 июня 2011

Если вы хотите, чтобы символы отладки использовались в качестве ориентира, вы можете использовать метки для их создания (просто убедитесь, что они не удалены из данных отладки, если на них нет ссылок), хотя никогда не использовал использованный gdb, я не уверен если он будет подбирать метки, как это делает ollydbg при сканировании / анализе obj но если рассматривать его как точки останова после, почему бы просто не использовать ловушку отладки, например msvc __debugbreak()?

0 голосов
/ 26 мая 2011

При компиляции -D ST_xxx

Я использую это для включения сообщений отладки, используя макросы.Он определяет константу ST_xxx со значением 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...