Как получить отслеживание стека, когда программа C++ отказывает? (использующий msvc8/2005)

Это сделает это:

/[A-Za-z\u00C0-\u00FF ]+/.exec('hipopótamo maçã pólen ñ poção água língüa')

Он явно выбирает диапазон символов юникода. Он будет работать для латинских символов, но другие странные символы могут быть вне этого диапазона.

6
задан Mihai Limbășan 22 March 2009 в 18:39
поделиться

6 ответов

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

Чтобы сделать это, необходимо использовать файл PDB, который был создан с EXE. Поместите файл PDB в том же каталоге как EXE, который отказал.Примечание: Даже если у Вас есть тот же исходный код, создавая дважды и с помощью первого EXE, и второй PDB не будет работать. Необходимо использовать точный PDB, который был создан с EXE.

Затем присоедините отладчик к процессу, который отказал. Пример: windbg или VS.

Затем просто контроль Ваш стек вызовов, также имея Ваше открытое окно потоков. Необходимо будет выбрать поток, который отказал, и проверьте стек вызовов для того потока. Каждый поток имеет различный стек вызовов.

Если Вам уже присоединят Ваш отладчик VS, то он автоматически перейдет к исходному коду, который вызывает катастрофический отказ для Вас.

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

7
ответ дан 9 December 2019 в 22:42
поделиться

Можно инициировать мини-дамп путем установки обработчика для неперехваченных исключений. Вот статья, которая объясняет все о мини-дампах

Google на самом деле реализовал их собственный обработчик катастрофических отказов с открытым исходным кодом под названием BreakPad, который также использование Mozilla я думаю (это - то, если Вы хотите что-то более серьезное - богатый и устойчивый обработчик катастрофических отказов).

2
ответ дан 9 December 2019 в 22:42
поделиться

При выполнении отладочной версии на машине с VS она должна предложить поднимать его и позволять Вам видеть отслеживание стека.

Проблема состоит в том, что настоящая проблема больше не находится на стеке вызовов. При освобождении указателя дважды который может привести к этой проблеме, где-то в другом месте не связанной с программой (в следующий раз, когда что-либо получает доступ к "куче" datastructures),

Я записал этот блог на некоторых подсказках для того, чтобы заставлять проблему обнаружиться в стеке вызовов, таким образом, можно выяснить то, что продолжается.

http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/02/06/6-_2200_Pointers_2200_-on-Debugging-Unmanaged-Code.aspx

Лучшая подсказка должна использовать gflags утилиту, чтобы заставить проблемы указателя вызвать непосредственные проблемы.

3
ответ дан 9 December 2019 в 22:42
поделиться

CrashFinder может помочь Вам определить местоположение места исключения, учитывая DLL и адрес исключения, о котором сообщают.
Можно взять этот код и интегрировать его в приложение, чтобы иметь стек козелки, автоматически сгенерированные, когда существует неперехваченное исключение. Это обычно выполняется с помощью __try{} __except{} или с вызовом к SetUnhandledExceptionFilter, который позволяет Вам указывать обратный вызов ко всем необработанным исключениям.

0
ответ дан 9 December 2019 в 22:42
поделиться

Если я помню правильно, что окно сообщения должно иметь кнопку, которая говорит 'повторную попытку'. Это должно затем повредить программу (в отладчике) в точке, где утверждение произошло.

0
ответ дан 9 December 2019 в 22:42
поделиться

Можно было также установить посмертный отладчик в клиентской системе. Это - достойный, общий способ получить информацию, когда у Вас нет создания дампа встроенным в Ваше приложение (возможно, для более старой версии, для которой необходимо все еще получить информацию).

Доктор Watson в Windows может быть установлен путем выполнения: drwtsn32 -i Выполнение drwtsn32 (без любых опций), поднимет диалоговое окно конфигурации. Это позволит создание файлов дампа катастрофического отказа, которые можно позже проанализировать с WinDbg или чем-то подобным.

0
ответ дан 9 December 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: