посланник отладки на MacOS с lldb / gdb

Я хочу отладить envoy на MacOS, поэтому предпринимаю следующие действия:

  1. Я создаю двоичный файл envoy с помощью команды bazel build -c dbg --apple_generate_dsym // source / exe: envoy-static
  2. lldb -p {pidOfEnvoy}, установить точку останова, установить точку останова --name onConnectionEvent

но исходный код не показывает, когда достигается точка останова. Поддерживается ли это в MacOS с помощью сборки bazel? Если поддерживается, какой вариант я должен добавить, чтобы построить фразу?

Более того, могу ли я отлаживать посланника с помощью Xcode?


person 甲 由    schedule 10.07.2018    source источник


Ответы (1)


Есть два возможных варианта отказа.

(1) lldb вообще не может найти отладочную информацию.
(2) lldb может найти отладочную информацию, но не может найти фактические исходные файлы.

Вы можете различить эти случаи, просмотрев обратную трассировку кода, который должен содержать отладочную информацию. Если lldb не показывает номеров строк в трассировке, то это первый случай. Если вы видите номера строк, но не видите источника, значит, вы находитесь в последнем случае.

Рассмотрим их по порядку:

1) Поиск отладочной информации:

Похоже, ваша строка сборки инструктирует bazel сгенерировать dSYM, который должен позволить вам отлаживать двоичный файл.

Команда:

(lldb) список изображений

отобразит как двоичный файл, так и dSYM, если lldb его нашел. Проверьте это, чтобы увидеть, нашел ли lldb ваш dSYM.

Если dSYM не обнаруживается автоматически, вы можете найти его в файловой системе, а затем выполнить:

(lldb) add-dsym

чтобы lldb читал его вручную. Если это работает, но вы по-прежнему не видите исходную информацию, значит, dSYM, должно быть, был построен неправильно и не имеет всей необходимой информации. Вам, вероятно, придется проконсультироваться с некоторыми экспертами по лицевым панелям, чтобы решить эту проблему ...

Вы можете увидеть более подробную информацию о том, как символы отладки обрабатываются в macOS здесь:

http://lldb.llvm.org/symbols.html

2) Исходная информация, но без исходных файлов:

Если lldb видит отладочную информацию, но не видит источник, вам нужно будет использовать параметр source-map, чтобы сообщить lldb, где они находятся. Это описано, например, в этом ответе:

Присоединение источников к двоичному дилибу в Xcode

person Jim Ingham    schedule 10.07.2018