c# - 如何使用断点调试具有多个 dll 的 exe
问题描述
myapp.exe
在另一个程序运行一些复杂的逻辑之后,我有一个。我想像myapp.exe
Visual Studio 一样最好使用断点来调试问题。实现这一目标的方法是什么?该 exe 是一个控制台应用程序,并在现场运行。这不是一个正在运行的进程,所以我无法附加调试器。
我想要的预期行为是:
- 为那个 exe 和 dll 做魔术并设置断点
- 从其他程序调用exe
- Visual Studio 遇到断点,我可以调试正在发生的事情
解决方案
只需使用System.Diagnostics.Debugger.Launch()
要附加调试器的位置即可。您可以将它放在您想要的断点位置之前。Windows 会询问您要附加什么调试器。
另一种方法是检查 System.Diagnostics.Debugger.IsAttached 属性并等待这样的调试器(轮询):
while (!Debugger.IsAttached)
{
Thread.Sleep(500);
}
应用程序将循环,直到您附加调试器(在 Visual Studio 中,通过附加到进程命令 Ctrl+alt+P )。同样,只需在循环之后或什至在循环中放置一个断点,就完成了。
这是一种用于调试 Windows 服务应用程序的众所周知的方法,对您的意图也很有用。
推荐阅读
- javascript - 如何让程序连续运行?
- python - AttributeError:试图在python的二维列表中访问对象的属性
- jmeter - 如何为支付沙箱 http 请求生成会话 ID 和身份验证承载令牌,并且它在之前的任何请求中都不可用
- darklang-beta - 谁能解释 Uuid::generate 和 DB::generateKey 之间的区别?
- amazon-web-services - 从 AWS Lambda 为使用计划创建 API 密钥
- sql - 当列不共享任何参数(包括主键)时,如何在 MS SQL Server 中进行 FULL OUTER JOIN?
- python - joblib:工人因超时或内存泄漏而停止
- spring-integration - 没有发布者可以发布 TcpConnectionOpenEvent / TcpConnectionCloseEvent
- kubernetes - 无法创建 Istio bookinfo-gateway.yaml 网关
- angular - 读取 Firebase 数据项