Я хочу улучшить и без того хороший анализ проблемы 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)
происходит?
--selector
определяет разрыв имени селектора ObjC. Так что я бы не ожидал, что это сработает. Я не знаю, как работают эти проверочные макросы, но тот, кто получает отключение, говорит, что он возвращает значение в non-debug или останавливается в отладчике для отладки, поэтому я буду удивлен, если он вызовет исключение C ++. Тот факт, что точка останова исключения C ++ не срабатывает, подтверждает это. Вы можете указать class :: method для точки останова lldb. Так что вы можете попробовать:
(lldb) break set -n wxStandardPathsBase::Get
Это должно сузить точку останова. Конечно, если у вас есть отладочная информация для wxwidgets, вы сможете установить файл & точка разрыва строки, которая также будет более точной.
Других решений пока нет …