【问题标题】:How to debug an exe with multiple dlls using breakpoints如何使用断点调试具有多个 dll 的 exe
【发布时间】:2020-08-27 22:17:27
【问题描述】:

我有一个myapp.exe,在一些复杂的逻辑被另一个程序运行之后。我想用myapp.exe 调试问题,就像Visual Studio 最好使用断点一样。实现这一目标的方法是什么?该 exe 是一个控制台应用程序,并在现场运行。这不是一个正在运行的进程,所以我无法附加调试器。

我想要的预期行为是:

  • 变魔术并为该 exe 和 dll 设置断点
  • 从其他程序调用 exe
  • Visual Studio 遇到断点,我可以调试正在发生的事情

【问题讨论】:

  • 很好的问题和出色的工作,让您意识到您需要擅长调试才能进入编程掌握的下一步。老实说,在导致问题的函数中放置一个断点(F9),然后单步执行代码(F11)。您应该观看有关该主题的简短 YouTube 视频,以了解如何使用即时窗口、调用堆栈窗口、监视窗口以及如何编辑和继续以及拖放代码控件(黄线)以向上或向下跳过行。

标签: c# visual-studio debugging dll


【解决方案1】:

只需在要附加调试器的位置使用System.Diagnostics.Debugger.Launch()。您可以将它放在您想要的断点位置之前。 Windows 会询问您要附加什么调试器。

另一种方法是检查 System.Diagnostics.Debugger.IsAttached 属性并像这样等待调试器(轮询):

while (!Debugger.IsAttached)
{
    Thread.Sleep(500);
}

应用程序将循环,直到您附加调试器(在 Visual Studio 中,通过附加到进程命令 Ctrl+alt+P )。 同样,只需在循环之后甚至循环中放置一个断点即可。

这是一种用于调试 Windows 服务应用程序的众所周知的方法,对您的意图也很有用。

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多