Вам нужен conditional breakpoint
... см. Этот URL для более подробной информации:
http://msdn.microsoft.com/en-us/library/7sye83ce%28v=VS.90%29.aspx
Идея состоит в том, что вы знаете, какие условия выполняются для точки останова, чтобыЕсли эти условия выполняются, точка останова сработает, приостановив выполнение.Затем вы можете прийти утром и начать разбираться с кодом.
Если у вас DO есть точная точка, которую вы хотите вызвать, вы можете сделать программный разрывpoint DebugBreak (), которая вызовет исключение точки останова.Отладчик Visual Studio перехватит его и приостановит выполнение в этот момент.
Либо включите gflags
, чтобы запустить программу с ADPlus
, и в точке кода, которая, по вашему мнению, вызвала проблему, выдается исключение, которое не обрабатывается.Пусть сбой программы и ADPlus сгенерирует полный аварийный дамп памяти процесса.Тот факт, что у вас включен gflags, означает, что вы получите выделение памяти с хорошими границами вокруг них (обычно 0xCDCDCDCD
) для легкой отладки.
Наконец, вы также можете использовать библиотеку DbgHelp.dll
от Microsoft, чтобы создать мини-дамп, который может программно собирать различные уровни информации (без сбоев, как влечет за собой решение, приведенное выше).Требуемая функция: MiniDumpWriteDump .Вы можете написать обычный мини-дамп или полный дамп памяти, используя параметры.Это должно быть сделано из отдельного процесса, если это возможно (вы можете дождаться дескриптора в своем собственном процессе).