I have created JIRA issue NMAVEN-120 to address symbol/source server support.
> From: James Carpenter <
jcarpenter621@...>
> Subject: Research into Symbol and Source Servers
> To:
nmaven-dev@...
> Date: Tuesday, September 23, 2008, 11:19 AM
> Overview:
>
> I have been doing some reading/research to better
> understand symbol servers and source servers. I realize
> some readers may already be familiar with the topic, but for
> those that are not the information may prove useful.
>
> To provide the ability to easily step down into source code
> of referenced libraries within Visual Studio, NMaven will
> need to integrate with Microsoft's Source and Symbol
> server functionality.
>
> A high level overview can be found using the following
> links:
>
http://msdn.microsoft.com/en-us/magazine/cc301459.aspx>
http://msdn.microsoft.com/en-us/magazine/cc163563.aspx>
> ===================================
> Additional Useful Information:
>
> The source server directory in the "Debugging Tools
> for Windows" distribution contains a particularly
> useful MS Word document which provides a great deal of the
> details missing from the articles above. The section on
> "HTTP Sites and UNC Shares" is particularly
> interesting as it provides an alternate way to easily
> support source server functionality. Assuming you have
> installed "Debugging Tools for Windows" in the
> standard location the MS Word document can be found at:
> C:\Program Files\Debugging Tools for Windows
> (x86)\srcsrv\srcsrv.doc
>
> Note: You will need to install "Debugging Tools for
> Windows".
>
> ----------------------------------------
> The MS Help files installed along with "Debugging
> Tools for Windows" as well as most other documentation
> don't really cover the use of multiple symbol servers
> well. The omission can lead one to the false conclusion
> only a single remote symbol server is supported. From
> Chapter 4 (Managing Symbol and Source Files) of Advanced
> Windows Debugging by Daniel Pravat reveals one can include
> as many remote symbol servers in the sympath as desired.
> These can also be URLs not just UNC paths. (I may have
> found this in the MS Word document mentioned above.)
>
> Title: Advanced Windows Debugging
> by: Mario Hewardt; Daniel Pravat
> Publisher: Addison Wesley Professional
> Pub Date: October 29, 2007
> Print ISBN-10: 0-321-37446-0
> Print ISBN-13: 978-0-321-37446-2
> (Available on Safari.)
>
> ---------------------------------------
> When you store a pdb in the symbol server
>
> e.g.: prompt>symstore add /r /f
> C:\junk2\bin\*.* /s C:\symbolstore\ /t
> "MyApp" /v "Build 632"
>
> the symstore will create a directory structure which
> contains a GUID extracted from the PDB. As it turns out a
> PDB is given a GUID when it is created. One way to read
> the GUID is to use the dbh tool.
>
> e.g.: C:\junk2\bin>dbh -v srvind MySymbol.pdb
>
> Details on the dbh tool can be found in the MS Help files
> shipped with the "Debugging Tools for Windows".
>
> Note: Examples assume C:\Program Files\Debugging
> Tools for Windows (x86) is on your path.
>
> ===============================================
> Supporting Symbol/Source Servers in NMaven
>
> To properly support symbol and source server functionality
> in NMaven there appear to be two good choices I can see.
> These are:
>
> --------------
> Option 1:
>
> a) Create a plugin(s) which downloads the pdb files of
> every dependency (saved in the mvn repo as attached
> artifacts) and executes symstore to save the pdb files in a
> local symbol store.
>
> b) Create a plugin(s) which downloads the source archives
> of every dependency (saved in the mvn repo as attached
> artifacts) and expands them into a directory structure
> matching that of a UNC store. (See "HTTP Sites and
> UNC Shares" section of srcsrv.doc.)
>
> c) Ensure the pdb files are properly processed to include
> the necessary source stream during or before the deploy
> phase. It is important SNAPSHOT artifacts include this
> information so one can't wait for the release plugin to
> do the job.
>
> --------------
> Option 2:
>
> a) Same as Option 1.a
>
> b) Process the pdb files during/before the deploy phase to
> include the information necessary to extract a single
> source file. Under the covers the command line call formed
> when VS processed the source stream from the pdb file will
> need to resolve the relevant source archive and extract the
> relevant file from the source archive. The best way to do
> this is likely to work out a one line mvn call which will
> return the relevant source file, creating a plugin or two as
> necessary. The command line call formed when processing
> the source stream in the pdb file will therefore simply be a
> call into maven.
>
> -----------------
> Note:
>
> Careful examination of the perl scripts included in
> C:\Program Files\Debugging Tools for Windows
> (x86)\srcsrv\ and documented in the associated MS
> Word document should be enough to understand how the pdb
> processing works in both Option 1 and 2.
>
> -----------------
> Effort Estimate:
>
> Option 1 may be slightly easier to implement, but option 2
> will probably be a tad more elegant. It wouldn't be
> that much more effort to support both. I would guess
> either approach will probably take a week or two of work
> to complete, including testing.
>
>