http://bugs.winehq.org/show_bug.cgi?id=15489
Summary: Build should optionally produce .pdb file suitable for use with symbol server Product: Wine Version: 1.1.5 Platform: Other OS/Version: other Status: NEW Severity: enhancement Priority: P2 Component: build-env AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
When Windows applications with their own crash logging systems crash, they report the stack dump to their own crash dump server, which uses Microsoft-supplied .pdb files (or Microsoft's symbol server) to resolve the symbol names in system DLLs. Wine should also provide such .pdb files, for use by vendors in analyzing crash dumps. There should be an identifying key in the crash dump and the .pdb file allowing the crash server or debugger to choose the proper .pdb file; MSFT must support that, let's see if we can use the same mechanism they do to handle the much larger number of Wine versions and flavors.
http://bugs.winehq.org/show_bug.cgi?id=15489
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adys.wh@gmail.com
--- Comment #1 from Jerome Leclanche adys.wh@gmail.com 2011-10-27 12:09:27 CDT --- Im guessing this hasn't been fixed.
https://bugs.winehq.org/show_bug.cgi?id=15489
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Hardware|Other |x86 OS|other |Linux
--- Comment #2 from Austin English austinenglish@gmail.com --- (In reply to Jerome Leclanche from comment #1)
Im guessing this hasn't been fixed.
It has not.
https://bugs.winehq.org/show_bug.cgi?id=15489
--- Comment #3 from Austin English austinenglish@gmail.com --- This would also potentially be useful for valgrind + wine's test. The loader tests show: ../../../tools/runtest -q -P wine -T ../../.. -M kernel32.dll -p kernel32_test.exe.so loader && touch loader.ok ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty ==30892== Warning: Missing or un-stat-able /home/austin/.wine-valgrind/drive_c/users/austin/Temp/ldr2ab4.pdb loader.c:459: Test failed: 2: 0x10002000 != 0 loader.c:460: Test failed: 2: 1 != 0 loader.c:462: Test failed: 2: 2000 != MEM_FREE loader.c:463: Test failed: 2: 20000 != 0 ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty ==30892== Warning: Missing or un-stat-able /home/austin/.wine-valgrind/drive_c/users/austin/Temp/ldr2b8c.pdb loader.c:459: Test failed: 3: 0x10002000 != 0 loader.c:460: Test failed: 3: 1 != 0 loader.c:462: Test failed: 3: 2000 != MEM_FREE loader.c:463: Test failed: 3: 20000 != 0 ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty ==30892== Warning: Missing or un-stat-able /home/austin/.wine-valgrind/drive_c/users/austin/Temp/ldr2bb0.pdb loader.c:459: Test failed: 4: 0x10001000 != 0 loader.c:460: Test failed: 4: 1 != 0 loader.c:462: Test failed: 4: 2000 != MEM_FREE loader.c:463: Test failed: 4: 20000 != 0 ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty ==30892== Warning: Missing or un-stat-able /home/austin/.wine-valgrind/drive_c/users/austin/Temp/ldr2bee.pdb loader.c:459: Test failed: 6: 0x10002000 != 0 loader.c:460: Test failed: 6: 1 != 0 loader.c:462: Test failed: 6: 2000 != MEM_FREE loader.c:463: Test failed: 6: 20000 != 0 ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty ==30892== Warning: Missing or un-stat-able /home/austin/.wine-valgrind/drive_c/users/austin/Temp/ldr2c13.pdb loader.c:459: Test failed: 7: 0x10002000 != 0 loader.c:460: Test failed: 7: 1 != 0 loader.c:462: Test failed: 7: 2000 != MEM_FREE loader.c:463: Test failed: 7: 20000 != 0 ==30892== LOAD_PDB_DEBUGINFO: Find PDB file: /tmp/valgrind_petmp30892_8de13308 is empty
though it's a lot of work for a niche gain.
https://bugs.winehq.org/show_bug.cgi?id=15489
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
well the part of producing .pdb files is already possible using llvm-mingw cross-toolchain. See Jacek's status update here:
https://www.winehq.org/pipermail/wine-devel/2019-December/157038.html
https://github.com/mstorsjo/llvm-mingw
Martin provides prebuilt cross-toolchains for Linux and Windows here:
https://github.com/mstorsjo/llvm-mingw/releases
For Linux distros just download and unpack the tarball for Ubuntu.
https://github.com/mstorsjo/llvm-mingw/releases/download/20191230/llvm-mingw...
Inject the cross-toolchain into PATH variable to have Wine's 'configure' to pick it up. Additionally you need export the following environment variables:
--- snip --- $ export CROSSCFLAGS="-g -gcodeview -O2" $ export CROSSLDFLAGS="-Wl,-pdb=" --- snip ---
After building you end up with PDB files for each component/module where the conversion to PE format has already been done (still WIP):
--- snip --- $ pwd /home/focht/projects/wine
# search build directory $ find mainline-build-x86_64/ -name "*.pdb"
mainline-build-x86_64/dlls/acledit/acledit.pdb mainline-build-x86_64/dlls/aclui/aclui.pdb mainline-build-x86_64/dlls/activeds/activeds.pdb mainline-build-x86_64/dlls/actxprxy/actxprxy.pdb mainline-build-x86_64/dlls/adsldp/adsldp.pdb mainline-build-x86_64/dlls/adsldpc/adsldpc.pdb mainline-build-x86_64/dlls/advpack/advpack.pdb mainline-build-x86_64/dlls/amsi/amsi.pdb mainline-build-x86_64/dlls/amstream/amstream.pdb mainline-build-x86_64/dlls/api-ms-win-appmodel-identity-l1-1-0/api-ms-win-appmodel-identity-l1-1-0.pdb ... mainline-build-x86_64/dlls/msvcirt/msvcirt.pdb mainline-build-x86_64/dlls/msvcm80/msvcm80.pdb mainline-build-x86_64/dlls/msvcm90/msvcm90.pdb mainline-build-x86_64/dlls/msvcp100/msvcp100.pdb mainline-build-x86_64/dlls/msvcp110/msvcp110.pdb mainline-build-x86_64/dlls/msvcp120_app/msvcp120_app.pdb mainline-build-x86_64/dlls/msvcp120/msvcp120.pdb mainline-build-x86_64/dlls/msvcp140/msvcp140.pdb mainline-build-x86_64/dlls/msvcp60/msvcp60.pdb mainline-build-x86_64/dlls/msvcp70/msvcp70.pdb mainline-build-x86_64/dlls/msvcp71/msvcp71.pdb mainline-build-x86_64/dlls/msvcp80/msvcp80.pdb mainline-build-x86_64/dlls/msvcp90/msvcp90.pdb mainline-build-x86_64/dlls/msvcr120_app/msvcr120_app.pdb mainline-build-x86_64/dlls/msvcrt20/msvcrt20.pdb mainline-build-x86_64/dlls/msvcrt40/msvcrt40.pdb mainline-build-x86_64/dlls/msvfw32/msvfw32.pdb mainline-build-x86_64/dlls/msvidc32/msvidc32.pdb mainline-build-x86_64/dlls/mswsock/mswsock.pdb mainline-build-x86_64/dlls/msxml2/msxml2.pdb mainline-build-x86_64/dlls/msxml4/msxml4.pdb mainline-build-x86_64/dlls/msxml6/msxml6.pdb ... mainline-build-x86_64/programs/wordpad/wordpad.pdb mainline-build-x86_64/programs/write/write.pdb mainline-build-x86_64/programs/wscript/wscript.pdb mainline-build-x86_64/programs/wuauserv/wuauserv.pdb mainline-build-x86_64/programs/wusa/wusa.pdb mainline-build-x86_64/programs/xcopy/xcopy.pdb --- snip ---
Regarding the topic of symbol servers ... Well, that's another topic which should be discussed in different ticket(s). It's certainly possible to set up a MS symsrv-compatible local or remote symbol store for Wine .pdb files by using the 'symstore' tool from 'Microsoft Debugging Tools for Windows'. Supporting Windows debuggers on Linux which tightly integrate with native 'dbghelp' v6.3+, 'symsrv' and 'msdiaxxx' requires more work.
$ wine --version wine-5.0-rc3
Regards
https://bugs.winehq.org/show_bug.cgi?id=15489
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek@codeweavers.com
--- Comment #5 from Jacek Caban jacek@codeweavers.com --- The next step for .pdb files support is making build system and winegcc aware of them. But that will have to wait until after code freeze.
It's great to see that you got symbol server working! I used .pdbs produced like that in VS running on Windows and it worked fine as well.
https://bugs.winehq.org/show_bug.cgi?id=15489
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |83d00d328f58f910a9b197e0a46 | |5b110cbdc727c Resolution|--- |FIXED
--- Comment #6 from Jacek Caban jacek@codeweavers.com --- This is fixed in Wine now. The proper way to build pdb files now is configure CROSSDEBUG=pdb This will generate pdb files in build dir. Potential further improvements are possible. We could for example provide a way to install those files that could also be used to sync with symbol server. I didn't try that yet, ideas are welcomed.
https://bugs.winehq.org/show_bug.cgi?id=15489
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 5.9.