I have created JIRA issue NMAVEN-120 to address symbol/source server support. 


--- On Tue, 9/23/08, James Carpenter <[EMAIL PROTECTED]> wrote:

> From: James Carpenter <[EMAIL PROTECTED]>
> Subject: Research into Symbol and Source Servers
> To: [email protected]
> 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.
> 
>  

Reply via email to