GSOC 2017 - Crash Reporting - Report 5
Breakpads Implementation for Windows using mingw32
General Flow Chart:
Generation of Symbol file: MuseScore.sym
a) Generation of Dwarf data
where MuseScore.exe needs to be build with g++ -g
b) Generation of pdb file from MuseScore.exe using cv2pdb (https://github.com/gsocnikos/musescore_crash/raw/master/cv2pdb/cv2pdb.e…) this exe I compiled it with MS VC++ 2015 and it works OK with mingw32 version 5.3.0 . I tried the precompiled version from https://github.com/rainers/cv2pdb/releases but it is not working. The following command will produce the MuseScore.pdb file, it might take up to 10-15 minutes:
cv2pdb.exe MuseScore.exe
c) Symbol generation using precompiled dump_sym (https://chromium.googlesource.com/breakpad/breakpad/+/master/src/tools/…). For downloading breakpad code you can use the git command though google is recommending to use the depot_tools (fetch breakpad). The following command will produce the symbol file:
dump_syms.exe MuseScore.pdb > MuseScore.sym
d) Upload the MuseScore.sym to the server. I am currently using curl and cygwin using the command:
curl --data-binary @MuseScore.sym "https://musescore.sp.backtrace.io:6098/post?format=symbols&token=8ca115…"
Generation of Minidump file for breakpad client
When a crash occure breakpad client will upload the dmp file into the server. The manual command is:
curl --data-binary @fb4f6a25-71ba-4a74-bf6a-997fcf071347.dmp "https://musescore.sp.backtrace.io:6098/post?format=minidump&token=00268…"
Implementation of source code for musescore can be found under the folder thirdparty/breakpad:
https://github.com/musescore/MuseScore/compare/master...gsocnikos:add-b…
Next Steps
a) clear up the breakpad files that I am not using at the thirdparty/breakpad: https://github.com/gsocnikos/musescore
b) tried to see how the metadata works with the server and which information I need to include from musescore
c) implementatio for linux and mac of breakpad, currently this version works only for windows.