2013-09-13 2 views
3

У меня есть несколько методов, которые генерируются макросом. Я вижу код в компаньоне «preprocess», он компилируется и работает нормально. Я могу пройти через разборку, но это не весело. Также кажется, что аналогичная проблема существует для нескольких операторов, которые написаны на одной строке. Любые решения?Как отлаживать макросгенерированные методы в Xcode/LLDB?

ответ

1

Макросы трудно отлаживать, как вы переживаете.

Это потому, что они расширены до начала компиляции (препроцессором), поэтому к тому времени, когда clang/gcc/icc/все видит ваш код, а затем генерирует для него информацию об отладке, включая строки строк, нет следа слева от макроса.

Проблема не связана с LLDB и в большей степени связана с характером модели компиляции C/C++/ObjC с препроцессором, а затем отдельным компилятором, где только последний способствует генерации информации об отладке и только предыдущей видит макросы.

+0

Я это понимаю, но у Xcode есть вкладка сопутствующего кода для кода препроцессора-вывода. Я ожидаю, что вы сможете отлаживать * это *, по крайней мере. –

+0

В принципе, правило состоит в том, что вы сможете отлаживать любой исходный код, который компилятор видит и испускает информацию об отладке. В присутствии макросов я ожидал бы, что строки таблицы не могут точно соответствовать вашему исходному коду, esp с многострочными макросами. Я не уверен, что представляет собой пользовательский интерфейс с предварительным кодом вывода. Если вы чувствуете, что Xcode может сделать лучше, вы можете обязательно подать такой запрос на bugreport.apple.com –

+0

Я предполагаю, что я это сделаю. Следующий вопрос: может ли LLDB отлаживать несколько операторов, которые живут в одной строке? Потому что это тоже то, что я не мог заставить Xcode делать. –

Смежные вопросы