Я использовал http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu, чтобы получить файл дампа из моего приложения, которое всегда дает сбой в другой системе.
Итак, что у меня есть, это файл заголовка и CPP и в режиме отладки, но без подключенного отладчика, он спрашивает меня, хочу ли я создать файл dmp или нет, а затем происходит сбой, но в режиме выпуска он просто падает.
В основном код, который я использовал,
void IndexFault(int n)
{
unsigned char* smallArray = new unsigned char[4];
printf((const char*)smallArray[n]);
}
MiniDumper* mDump = new MiniDumper("Dumpfile");
int main()
{
IndexFault(4);
return 0;
}
Опять же, при выполнении исполняемого файла, созданного в режиме отладки, я получаю файл просто отлично, с выпуском я ничего не получаю. В обоих случаях это 64-битный код. Я применю это к моему реальному коду, как только он заработает, но на данный момент я не могу понять, что происходит. Я использую Minidumpwriter с веб-сайта, как указано выше.
Debug
включает дополнительные проверки (такие как проверка границ), которые не включены в режимRelease
(по соображениям производительности), и что ваш код может полагаться на такой тест. - person Matthieu M.   schedule 19.12.2012MiniDumper
и скинировал его до минимума строк, которые все еще создают дамп. Затем посмотрите, работает ли это в режиме Release. Если в Debug работает, а в Release нет, то можно попробовать медленно превратить Debug в Release: включить оптимизации, поставить NDEBUG и т.д. Можно попробовать отладить и Release. Если ничего не помогает, опубликуйте код со скинами здесь, чтобы мы могли посмотреть. - person cxxl   schedule 20.12.2012