如何调试C#解决方案中通过Process类调用的.exe文件
解决同一C#解决方案中Process调用项目无法调试的问题
手动附加调试器到目标进程
运行调用程序后,在Visual Studio里点击「调试」→「附加到进程」,找到你通过Process启动的目标exe进程,选中后完成附加,就能正常断点调试。如果进程启动后很快执行完毕,可在被调用项目的入口处添加一段等待代码,给你留足附加时间:#if DEBUG Console.WriteLine("等待调试器附加..."); while (!System.Diagnostics.Debugger.IsAttached) { System.Threading.Thread.Sleep(1000); } Console.WriteLine("调试器已附加"); #endif配置多项目启动替代Process调用
右键解决方案→「属性」→「启动项目」,选择「多启动项目」,将调用项目和被调用项目的启动动作都设为「启动」,还能调整启动顺序。这种方式无需通过Process手动启动,Visual Studio会同时管理两个进程的调试,天然支持断点命中。检查Process启动的版本与路径配置
确保Process启动的是Debug版本的exe,路径指向目标项目的bin/Debug目录而非Release。同时设置正确的工作目录,避免调试符号加载失败:var startInfo = new ProcessStartInfo { FileName = @"..\..\..\TargetProject\bin\Debug\TargetProject.exe", UseShellExecute = false, WorkingDirectory = @"..\..\..\TargetProject\bin\Debug" }; Process.Start(startInfo);验证调试符号的生成与加载
- 检查被调用项目属性→「生成」→「高级」,确认「调试信息」设置为「完整」或「pdb-only」(Debug模式默认是完整)。
- 在Visual Studio的「调试」→「选项」→「符号」中,确保本地符号路径包含目标项目的
bin/Debug目录,按需勾选「Microsoft符号服务器」加载系统库符号。 - 若断点显示为空圈,可通过「调试」→「窗口」→「模块」找到目标exe,右键选择「加载符号」手动指定pdb文件路径。
启用Just-In-Time调试
打开Visual Studio→「工具」→「选项」→「调试」→「Just-In-Time」,勾选「Managed」代码的Just-In-Time调试。这样当被调用进程抛出未处理异常时,会自动触发Visual Studio调试器附加,方便排查问题。
内容的提问来源于stack exchange,提问作者Ugus
相关产品推荐
相关产品推荐

