Результаты Qt Breakpad

Я следую заметкам с этого url

У меня он скомпилирован в моем коде (Qt, windows, VS 2015), я запускаю его в режиме отладки, и когда он падает, я делаю следующее:

Создайте файл символов

dump_syms.exe ZendeskClient.exe > ZendeskClient.sym

Используя dmp и файл символов, создайте текстовый файл (попробовал каждый)

minidump_stackwalk.exe filename.dmp symbols > ZendeskClient.txt 2>&1
minidump_stackwalk.exe filename.dmp ZendeskClient.sym > ZendeskClient1.txt 2>&1
minidump_stackwalk.exe filename.dmp ZendeskClient.sym symbols > ZendeskClient2.txt 2>&1

Но я не вижу ничего, что указывало бы на причину сбоя в приложении. Я вижу в тексте (600 строк) (это не вся информация, надеюсь, достаточно, чтобы показать то, что я пытаюсь показать. Остальные данные примерно такие же):

2016-04-20 21:00:32: minidump_processor.cc:264: INFO: Processing minidump in file C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp
2016-04-20 21:00:32: minidump.cc:3500: INFO: Minidump opened minidump C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp
2016-04-20 21:00:32: minidump.cc:3545: INFO: Minidump not byte-swapping minidump
2016-04-20 21:00:32: minidump.cc:3902: INFO: GetStream: type 1197932546 not present
2016-04-20 21:00:32: minidump.cc:1945: INFO: MinidumpModule could not determine version for C:\Projects\PersonalApps\Build\Windows\ZendeskClient\debug\ZendeskClient.exe
2016-04-20 21:00:32: minidump_processor.cc:116: INFO: Minidump C:\Users\adviner\c62072b9-3bf7-42b6-b6f2-28c3ccf9546f.dmp has CPU info, OS info, 

....

CPU: x86
     GenuineIntel family 6 model 78 stepping 3
     4 CPUs

Crash reason:  EXCEPTION_ACCESS_VIOLATION_READ
Crash address: 0xffffffffcdcdcddd

Thread 0 (crashed)
 0  ntdll.dll + 0x76bfc
    eip = 0x77bc6bfc   esp = 0x0018bb08   ebp = 0x0018bb78   ebx = 0x00000001
    esi = 0x00000000   edi = 0x000001fc   eax = 0x00000000   ecx = 0xcdcdcddd
    edx = 0x0018c570   efl = 0x00200202
    Found by: given as instruction pointer in context
 1  KERNELBASE.dll + 0xae131
    eip = 0x7795e132   esp = 0x0018bb80   ebp = 0x0018bb8c
    Found by: previous frame's frame pointer
 2  ZendeskClient.exe + 0xfcf3f
    eip = 0x002fcf40   esp = 0x0018bb94   ebp = 0x0018bba4
    Found by: previous frame's frame pointer
 3  ZendeskClient.exe + 0xfc9e7
    eip = 0x002fc9e8   esp = 0x0018bbac   ebp = 0x0018bbe4
    Found by: previous frame's frame pointer
 4  KERNELBASE.dll + 0x13f471
    eip = 0x779ef472   esp = 0x0018bbec   ebp = 0x0018bc74
    Found by: previous frame's frame pointer
 5  ntdll.dll + 0xa35ed
    eip = 0x77bf35ee   esp = 0x0018bc7c   ebp = 0x0018fb8c
    Found by: previous frame's frame pointer
 6  ntdll.dll + 0x65dad
    eip = 0x77bb5dae   esp = 0x0018fb94   ebp = 0x0018fb9c
    Found by: previous frame's frame pointer

...

Loaded modules:
0x00200000 - 0x003e9fff  ZendeskClient.exe  ???  (main)
0x00bf0000 - 0x00d62fff  ucrtbased.dll  10.0.10240.16384
0x02490000 - 0x024b2fff  WINMMBASE.dll  6.2.10586.0
0x02650000 - 0x0266cfff  qicnsd.dll  5.6.0.0
0x029d0000 - 0x02bc8fff  qwindowsd.dll  5.6.0.0
0x02d50000 - 0x02d68fff  qicod.dll  5.6.0.0
0x02d70000 - 0x02d85fff  qsvgd.dll  5.6.0.0
0x02d90000 - 0x02da4fff  qtgad.dll  5.6.0.0
0x02dd0000 - 0x02f0efff  dbghelp.dll  6.2.10586.0

Что-то не так в том, как я строю вывод? я на винде кстати


person adviner    schedule 21.04.2016    source источник


Ответы (1)


Ответ общий для практики отладки в Windows. Инструменты сборки Microsoft Visual C++ создают программу Формат файла базы данных, выводимый при компиляции/связывании проекта. И затем, когда программа дает сбой, вы получаете файл .dmp или minidump, в котором вы можете раскрутить стек с конкретными именами функций / строками.

Как выполнить настоящую отладку с файлом дампа? Вы можете использовать этот ответ в качестве Wiki для отладки с использованием файлов dmp и pdb: Visual Studio. Просто откройте файл дампа с помощью Visual Studio, а затем укажите базу данных программы, а затем исходный код, и вы увидите картину всех потоков/стеков на момент сбоя.

ОБНОВЛЕНИЕ: мы также можем «символизировать» «пустой» дамп без имен, как ответили: -symbolicate-anything">stackwalker загружает все файлы символов, но ничего не символизирует. Я предполагаю, что имя инструмента - minidump_stackwalk.

person Alexander V    schedule 21.04.2016
comment
Спасибо. Это то, что мне нужно, чтобы увидеть проблему. Ты жжешь :) - person adviner; 21.04.2016
comment
Мы сделали это и вспомнили, что есть способ улучшить вывод текста. Добавлено обновление. - person Alexander V; 21.04.2016
comment
@AlexanderVX, к сожалению, minidump_stackwalk по-прежнему не дает мне результатов. На самом деле я делаю что-то не так, когда не могу использовать VS2015. Я полностью застрял здесь. Моя проблема точно такая же, как описано выше. Любая помощь будет оценена, пожалуйста. - person Vivian Lobo; 02.12.2016