cv2pdb icon indicating copy to clipboard operation
cv2pdb copied to clipboard

How do i use this on executable built using by mingw64-qmake?

Open Youda008 opened this issue 2 years ago • 4 comments

I use mingw64 (gcc, gdb, mingw32-make) toolchain to build applications on Windows and i use the qt5-static package to produce graphical applications with all Qt libraries statically linked. I made a debug build that includes the debug information in the executable.

When i run cv2pdb, it completes without error, but apparently the resulting pdb does not load into Visual Studio (Professional 2022) correctly, because all i see is this obrazek

I tried putting the pdb file into the same directory as the crashed executable and the dump file, I tried adding that directory to the symbol paths in Visual Studio settings, but no luck so far.

I also noticed that my original executable had ~60MB, but after cv2pdb is has ~20MB while the pdb is only ~2.5MB, so clearly incomplete.

Is this scenario unsupported or do i need to setup something else?

Youda008 avatar Jun 30 '23 11:06 Youda008

I guess cv2pdb is stumbling over something in your debug information. If you can make your original executable available I might have a look. Please note that DWARF5 support is limited, so if the debug information is in this format you could try generating DWARF4 instead.

rainers avatar Jul 03 '23 07:07 rainers

My executable is here DoomRunner.zip

Youda008 avatar Jul 03 '23 20:07 Youda008

Your executable uses DWARF 5 indeed. There was a recent addition to better support it that wasn't yet in a released binary. Did you try building cv2pdb from master? I now committed a tiny fix, but the version before also showed this call stack for your executable:

 	KernelBase.dll!RaiseFailFastException() + 0x152 bytes	Unknown
 	dr.exe!tryToWriteFile()	C++
 	dr.exe!operator%<char, QString>()	C++
 	dr.exe!operator%<char, QString>()	C++
 	dr.exe!QList<Mod>::operator[]() Line 580	C++
 	dr.exe!AListModel<Mod>::operator[]() Line 173	C++
 	dr.exe!MainWindow::MainWindow() Line 342	C++
>	dr.exe!qMain() Line 29	C++
 	dr.exe!__mingw_enum_import_library_names()	C++
 	dr.exe!__tmainCRTStartup() Line 268	C++
 	dr.exe!WinMainCRTStartup() Line 159	C++
 	kernel32.dll!BaseThreadInitThunk() + 0x14 bytes	Unknown
 	ntdll.dll!RtlUserThreadStart() + 0x21 bytes	Unknown

rainers avatar Jul 06 '23 06:07 rainers

I built the project from master, but unfortunatelly i'm getting simmilar results. cv2pdb spams a lot of messages warn: could not find equivalent entry for typePtr 05BA764E, the resulting .pdb file is just 2.7 MB (where did the other 40 MB go?) and Visual Studio shows nothing.

~~But maybe that's because i don't know how to load the .pdb into Visual Studio properly? It never asked me where is the pdb file and doesn't give me option to point to it manually, so there must be some auto-detection involved, and maybe it's not working.~~ Found it https://www.codetinkerer.com/2017/12/06/debugging-3rd-party-nuget-packages.html

When i try to load that pdb file manually into Visual Studio, i get obrazek

Youda008 avatar Jul 07 '23 07:07 Youda008