Здравствуйте, T4r4sB, Вы писали:
TB>то есть всё тело макроса относится к одной дебаг локации
TB>Это значит, что я не могу поставить брекпоинт внутрь макроса в любое место.
Конечно не можете это же будет одна строка.
TB>Я при развороте тела макроса честно прописываю строку и колонну каждого токена. Но если макрос находится в другом файле, то отладчик итерируется по линиям и колоннам не того файла, в котором макрос, а того файла, который вызвал макрос. Потому что codeview (мне нужен именно он, так как мсвс) не позволяет задавать каждой инструкции свой файл.
TB>Если ли компилятор/отладчик, который позволяет ставить брекпоинты внутри макроса? И как выглядит его отладочная инфа?
TB>Как в том же D выглядит отладка кода, находящегося в сгенерированной строке?
Нету.
Но можно отлаживать не исходник, а то что выкатит препроцессор.
А еще лучше
отформатировать апосля.
gcc -E hello.c
# 1 "hello.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "hello.c"
# 1 "hello.h" 1
extern"C" int f(int i);
# 2 "hello.c" 2
int main(int argc, char** argv)
{
int x=f(f(f(f(42))));
return x+5;
}
ps: поиск тут не работает но была тут как-то такая тема: отладчики не нужны