[Development] [RFCs] Migrate from GCC MinGW to LLVM MinGW

Martin Storsjö martin at martin.st
Fri Jul 21 11:04:50 CEST 2023


On Thu, 20 Jul 2023, Cristian Adam via Development wrote:

> WinDbg didn't work, but lldb.exe itself works:
>
>       lldb MaxiDump.exe --core MaxiDump.dmp
> 
> I've updated cristianadam/MaxiDump (github.com) with this new information.

FWIW, I didn't test minidumps, but I tested that PDBs currently do work 
with at least WinDbg and MSVS. My test procedure was:

- Grab 
https://github.com/mstorsjo/llvm-mingw/blob/master/test/hello-exception.cpp 
as testcase. Change the source to intialize it with "crash = true" to 
trigger the crash case without giving command line parameters to the 
executable.

- Compile with llvm-mingw-20230712-ucrt-x86_64 with "clang++ 
hello-exception.cpp -o hello-crash.exe -g -gcodeview -Wl,--pdb= -static"

- With WinDbg: File, Open Executable, locate hello-crash.exe. Debug, Go. 
And I get the crash location in source opened, with call stack and local 
variables inspectable at least.

- With MSVS: File, Open, Project/Solution, locate hello-crash.exe. Debug, 
Start Debugging. Source for the crash site is opened, call stack and local 
variables seem reasonable.

- With LLDB: As LLDB supports both DWARF and PDB, it will prefer DWARF if 
such debug info was found. As other toolchain files that are linked in 
happen to have some DWARF in them, the executable will have a little bit 
of such debug info available, so LLDB ends up using that and not looking 
at the PDB. So first I run "strip hello-crash.exe" to get rid of the 
residual DWARF, after that "lldb hello-crash.exe" followed by "run", and I 
get the crash easily visible. (This case could probably be made nicer.)

If LLDB worked for you without, possibly without stripping out residual 
DWARF, but WinDbg didn't, it sounds like it might have ended up using 
DWARF after all?

// Martin



More information about the Development mailing list