如何在Visual Studio调试器中调试LinqPad查询?

41

我可以附加调试器并使其中断 - 但是它无法找到 .cs 文件,我认为 LinqPad 在其构建过程中删除了该文件.. 8-(


1
请注意,在提出这个问题之后,Linqpad推出了新的高级版,其中包括自己的调试器。 - Brian
3个回答

50

如果您调用

Debugger.Launch();
Debugger.Break(); 

若要在您的LINQPad脚本中启动断点,LINQPad将猜测您想使用VS调试脚本,并不会删除.cs文件。


1
我刚刚尝试了一个类似于以下代码的C#程序: 'code' void Main() { Debugger.Launch(); int i = 0; Debugger.Break(); i.Dump(); } 'code' 在VS中启动失败,无法找到代码。但是从LP再次运行后,VS就能找到.cs文件了... - Mesh
我遇到了问题,后来意识到我试图将VS 2008调试器附加到LINQPad.exe上;它必须是支持.NET 4+的VS版本(如VS 2012)。 - Cᴏʀʏ

25
  • 启动 LINQPad
  • 在 VS 中打开 调试 -> 附加到进程...
  • 选择 LINQPad.exe
  • 在你的代码中设置由 LINQPad C# 代码调用的断点,或在你想让调试器中断的 LINQPad 脚本中编写 Debugger.Break()。
  • 从 LINQPad 执行脚本并观察其神奇效果。

3
在调用Debugger.Break()方法之前,您应该检查Debugger.IsAttached属性。 - Tormod

3

如果您的LINQPad代码正在调用某个引用的C#程序集中的方法,并且您希望在Visual Studio 2015中调试该程序集,则可以按照以下步骤进行:

  1. 构建您的解决方案。
  2. 可选地,运行您的LINQPad脚本,让它崩溃等。在右下角的LINQPad状态栏中,注意浅蓝色着色的PID。
  3. 在VS中,按CTRL + ALT + P附加到进程。使用您看到的PID附加到LINQPad UserQuery进程。
  4. 在VS中设置断点。
  5. 运行linqpad查询并跳转到VS。您应该会遇到断点!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接