Oops, I meant to say I created NMAVEN-213 to track symbol and source server support.
--- On Tue, 9/23/08, James Carpenter <[EMAIL PROTECTED]> wrote: > From: James Carpenter <[EMAIL PROTECTED]> > Subject: Re: Research into Symbol and Source Servers > To: [email protected] > Date: Tuesday, September 23, 2008, 2:46 PM > 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. > > > >
