Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dotPeek Issue Debugging 3rd Party .dll

I using dotPeek v1.2 with VS2013 Update 3 to attempt to debug a referenced C# .dll's code. I've followed all the directions from the following tutorial: Using dotPeek as a Symbol Server (http://localhost:33417/ is set as symbol location, etc.) To be honest I've read a bunch of articles like this and this, combed through all the required settings, and really haven't seen 1 working solution of debugging a 3rd party non-framework .dll so I'm not convinced this is a fully working product from this aspect.

Regardelss, dotPeek should allow once the symbol server is started to step into and debug code from 3rd party assemblies from VSNET according to their documentation. I know which .dlls to select for dotPeek because I inspected their path from Debug -> Windows -> Modules.

I happen to have ReSharper also installed which allows me to decompile when I right click a line of code and select 'Go to Declaration'. The problem is it appears the symbol server isn't doing anything to assist in serving up the code at debug time. Rather the decompiled source provided by ReSharper seems to be what VS.NET wants to jump into. The problem is I always get the following error:

Source file: C:\Users\username\AppData\Local\JetBrains\ReSharper\v8.2\SolutionCaches_ReSharper.Meijer.Ecommerce.Nav.WebAppServices.-382002776\Decompiler\decompiler\53\66e7ccc2\MyClass.cs

Module: C:\Projects\MyProject\bin\Debug

Process: [24808] vstest.executionengine.x86.exe

The source file is different from when the module was built. Would you like the debugger to use it anyway?

If I say, 'yes' and step in the debugger appears to be on lines that don't exist in the file and is out of sync. This makes sense as it is showing the .cs class from the 'Source File' location but has the .dll loaded from the /bin/Debug

However, I don't understand why this is happening anyway as dotPeek should be serving up the loaded symbols from the /bin/Debug and not be trying to step into any decompiled source ReSharper had presented.

How do I configure this so VS2103 will actually debug the symbols and code served up from dotPeek?

like image 568
atconway Avatar asked Oct 22 '14 22:10

atconway


1 Answers

One big gotcha is that you need to make sure you have a valid path set for the cache directory in the Tools -> Options -> Debugging -> Symbols page.

Also, on the main Debugging options page (Tools -> Options -> Debugging -> General) make sure you:

  • Uncheck the "Enable Just My Code" option
  • Uncheck the "Enable .NET Framework source stepping" option
  • Check the "Enable source server support" option
  • Uncheck the "Require source files to exactly match the original version

It's also worth checking the "Print source server diagnostic messages to the Output window" option, and checking the output window when trying to step into 3rd party code. It should hopefully point to any issues.

This is how I've got things set up, and I can debug 3rd party dlls (obviously, dotPeek needs to have the .dll loaded in the assembly explorer before you start debugging, too).

like image 95
citizenmatt Avatar answered Sep 18 '22 15:09

citizenmatt