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. > >
