none
WinDbg: Local symbols loading speed RRS feed

  • Question

  • Loading local symbols in WinDbg takes quite a lot longer then loading same symbols in Visual Studio.

    In VS it goes almost instantaneously(while running debugged process at the same time nonetheless), in WinDbg(and other in the family, tested in Preview and cdb) it takes half a second.

    While half a second doesn't sound like much for big project this means minutes of wait.

    I have cache setup and WinDbg creates copies of my PDBs in there(Though I don't know if he uses them, nor would they help as those are local symbols anyway).

    !sym noisy doesn't show any problems.

    Can I do something to speed up this process? (I can of course just try to not load symbols, but I don't count that as solution when VS deals with it just fine.)

    Thursday, June 4, 2020 1:19 PM

All replies

  • You already tried prepending sympath with local directory(ies)? Looks like it skips contacting ms-symbol server:

    .sympath srv*c:\MSSymbols*https://msdl.microsoft.com/download/symbols
    
    0:000> .reload /f MFCApplicationTest.exe
    SYMSRV:  BYINDEX: 0x2
             c:\mssymbols*https://msdl.microsoft.com/download/symbols
             MFCApplicationTest.pdb
             349C15D6C07444BF9849412429C4962E1
    SYMSRV:  UNC: c:\mssymbols\MF\MFCApplicationTest.pdb\349C15D6C07444BF9849412429C4962E1\MFCApplicationTest.pdb - path not found
    SYMSRV:  UNC: c:\mssymbols\MF\MFCApplicationTest.pdb\349C15D6C07444BF9849412429C4962E1\MFCApplicationTest.pd_ - path not found
    SYMSRV:  UNC: c:\mssymbols\MF\MFCApplicationTest.pdb\349C15D6C07444BF9849412429C4962E1\file.ptr - path not found
    SYMSRV:  HTTPGET: /download/symbols/index2.txt
    SYMSRV:  HttpQueryInfo: 80190190 - HTTP_STATUS_BAD_REQUEST
    SYMSRV:  HTTPGET: /download/symbols/MFCApplicationTest.pdb/349C15D6C07444BF9849412429C4962E1/MFCApplicationTest.pdb
    SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
    SYMSRV:  HTTPGET: /download/symbols/MFCApplicationTest.pdb/349C15D6C07444BF9849412429C4962E1/MFCApplicationTest.pd_
    SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
    SYMSRV:  HTTPGET: /download/symbols/MFCApplicationTest.pdb/349C15D6C07444BF9849412429C4962E1/file.ptr
    SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND
    SYMSRV:  RESULT: 0x80190194
    *** WARNING: Unable to verify checksum for MFCApplicationTest.exe
    DBGHELP: MFCApplicationTest - public symbols & lines 
            C:\TEMP\MFCApplicationTest\x64\Debug\MFCApplicationTest.pdb
    


    .sympath C:\TEMP\MFCApplicationTest\x64\Debug;srv*c:\MSSymbols*https://msdl.microsoft.com/download/symbols
    
    0:000> .reload /f MFCApplicationTest.exe
    *** WARNING: Unable to verify checksum for MFCApplicationTest.exe
    DBGHELP: MFCApplicationTest - public symbols & lines 
            c:\temp\mfcapplicationtest\x64\debug\MFCApplicationTest.pdb
    


    With kind regards
    Friday, June 5, 2020 11:25 AM
  • Yes, I don't need server symbols at all. All my symbols are local.

    My sympath is just

    c:\program files\epic games\ue_4.25\engine\binaries\win64\

    Output of reload goes:

    DBGHELP: UE4Editor_BehaviorTreeEditor - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-BehaviorTreeEditor.pdb
    DBGHELP: UE4Editor_AIGraph - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-AIGraph.pdb
    DBGHELP: UE4Editor_FunctionalTesting - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-FunctionalTesting.pdb
    DBGHELP: UE4Editor_AutomationController - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-AutomationController.pdb
    DBGHELP: UE4Editor_AutomationMessages - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-AutomationMessages.pdb
    DBGHELP: UE4Editor_CollisionAnalyzer - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-CollisionAnalyzer.pdb
    DBGHELP: UE4Editor_MessageLog - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-MessageLog.pdb
    DBGHELP: UE4Editor_AssetTools - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-AssetTools.pdb
    DBGHELP: UE4Editor_DetailCustomizations - private symbols & lines 
            c:\program files\epic games\ue_4.25\engine\binaries\win64\UE4Editor-DetailCustomizations.pdb

    and on and on...

    And every single of those pdbs just loads a lot slower then in VS.

    Problem is, there is 604 of those modules. Single one takes like half a second in WinDbg.

    Tried also adding

    srv*c:\MSSymbols*https://msdl.microsoft.com/download/symbols

    just to check if maybe it's still loading something from servers. It only added more time by loading mssymbols that I don't need for now :/

    Friday, June 5, 2020 1:58 PM