Как остановить LLDB при возникновении ошибки

Я хочу улучшить и без того хороший анализ проблемы PyInstaller https://github.com/pyinstaller/pyinstaller/issues/2355. Для этого мне нужно либо перехватить все ошибки, либо установить конкретную точку останова с помощью LLDB.

На GitHub Я заявил

Для начала, по сути, просто нужна точка останова, которая перехватывает все ошибки и затем выгружает стек вызовов.
Я старался break set -E C++, breakpoint set --selector __cxa_throw: […] но нет, не останавливается.

Выполнение делает остановить то есть достичь точки разрыва если я сделаю b Get но есть слишком много функций, на которые влияет этот селектор.

В заключение, как я могу сделать исполняемый файл, доступный на http://frightanic.com/misc/hello-world, остановиться прямо тогда, когда эта ошибка в ./src/common/stdpbase.cpp(62) происходит?

0

Решение

--selector определяет разрыв имени селектора ObjC. Так что я бы не ожидал, что это сработает. Я не знаю, как работают эти проверочные макросы, но тот, кто получает отключение, говорит, что он возвращает значение в non-debug или останавливается в отладчике для отладки, поэтому я буду удивлен, если он вызовет исключение C ++. Тот факт, что точка останова исключения C ++ не срабатывает, подтверждает это. Вы можете указать class :: method для точки останова lldb. Так что вы можете попробовать:

(lldb) break set -n wxStandardPathsBase::Get

Это должно сузить точку останова. Конечно, если у вас есть отладочная информация для wxwidgets, вы сможете установить файл & точка разрыва строки, которая также будет более точной.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]