开发者

VS.NET: Source Server support enabled; Cannot retrieve source file from sourceserver

I've set up a symbol-server for one of my current projects. During a nightly build I:

  • build my source
  • apply a label to the sourcefiles that have been used in the build
  • index the pdb files with the necessary information
  • stored the pdb files in the MS symbol server

(In fact, I've followed this article: Source Server helps you kill bugs.

Now, I have referenced the DLL that has its symbols published in another project. I debug that project, and I want to step into the code of the project that has published debug symbols.

I've set up VS.NET so that Source Server support is enabled. When I debug my project, I can see (in the Modules window) that the symbols for my referenced project have indeed been loaded. When I want to step into a method that originates from the referenced DLL, VS.NET pops up a warning where I must confirm that VS.NET may indeed execute a command to obtain the source code from the source server.

The command looks like this:

ss.exe get -GL"c:\Users\... -GF -I-Y -W "$/MyProject/Source/..." -VL"specificversion"

(I have ommitted the full paths for brevity).

When I run the command, I get the error 'no source code available'.

When I execute that command on the command line, I get the error:

Invalid DOS Path

It seems that VSS returns this error when the target path does not exists. Indeed, the local path where the retrieved source file should be put, does not exists on my disk. VSS should create it.

How can I make sure that VS.NET issues a command so that the target path will be created when source code is retrieved from a source server ?

EDIT: I've managed to get a little bit further in my quest. On my Source Server machine, I've editted the vss.pm file, and I've changed the command that is written in the VSS_EXTRACT_CMD variable that exists inside the 'stream' that is written in the PDB file. I've changed the (Perl?) code to this:

push(@stream, "VSS_EXTRACT_CMD=if not exist %vsstrgdir% mkdir %vsstrgdir% | ss.exe get ".
                                   "-GL\"%vsstrgdir%\" -GF- -I-Y ".
                                   "-W \"\$/%var3%\" -VL\"%var4%\"");

So, in fact I've added the 'if not exists ... mkdir ...' part to it, and I've separated the two commands with a pipe (|).

In VS.NET, I've specified that the SourceServer commands that are issued by VS.NET, should be written in the output window as well. So, when I copy the command that I find in the output window, and I execute 开发者_开发百科that command on the command prompt, the directory is created and the file is retrieved. \o/

Unfortunately, when VS.NET does this, the file is not retrieved, and the directory has not been created as well ... Any ideas on what the problem could be ?

Edit: I've tested this on a Windows XP machine, and, it works. I use Windows Vista at the office, and on Vista, it doesn't work. It seems like VS.NET is not allowed to create the target-directory ?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜