Visual Studio:在生成进程时自动附加到进程

Bin*_*hen 66 c# debugging visual-studio

我想在生成过程中附加到进程(a.exe),是否可以使用VS?我只知道这个过程的名称.实际上我想要完成的是在c#代码中设置一个断点,但代码属于另一个可执行文件,它将由当前运行的应用程序(c.exe)启动.代码在初始化期间,因此我无法手动执行连接.

Mar*_*son 67

当我以前遇到这种情况(并且我控制了两个进程)时,我发现一个不错的解决方法是在产生进程的入口点调用Debugger.Launch().然后,VS将弹出一个对话框,让您附加到该过程.

  • 仅适用于.NET语言.例如,不适用于c ++ (9认同)

Rub*_*ink 27

请参阅MSDN文章,如何:自动启动调试器 - 这将允许人们跳过过多的繁忙工作单击确认对话框[不关闭UAC或其他混乱].本文列出了以下步骤:

  1. 启动注册表编辑器(regedit).
  2. 在注册表编辑器中,打开HKEY_LOCAL_MACHINE文件夹.
  3. 导航到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image文件执行选项.
  4. 在" 映像文件执行选项"文件夹中,找到要调试的应用程序的名称,例如myapp.exe.如果找不到要调试的应用程序:
    a.右键单击" 图像文件执行选项"文件夹,然后在快捷菜单上单击" 新建密钥".
    湾 右键单击新密钥,然后在快捷菜单上单击" 重命名".C.编辑应用程序名称的密钥名称; myapp.exe,在此示例中.
  5. 右键单击myapp.exe文件夹,然后在快捷菜单上单击" 新建字符串值".
  6. 右键单击新字符串值,然后在快捷菜单上单击"重命名".
  7. 将名称更改为调试器.
  8. 右键单击新的字符串值,然后在快捷菜单上单击" 修改".将出现" 编辑字符串"对话框.
  9. 在" 数值数据"框中,键入vsjitdebugger.exe.
  10. 单击确定.
  11. 注册表菜单中,单击退出.
  12. 包含vsjitdebugger.exe的目录必须位于系统路径中.将它添加到系统路径,请按照下列步骤操作:
    一.在"经典"视图中打开" 控制面板",然后双击" 系统".
    湾 单击高级系统设置.
    C.在" 系统属性"中单击" 高级"选项卡.
    d.在" 高级"选项卡上,单击" 环境变量".
    即 在" 环境变量"对话框的" 系统变量"下,选择" 路径",然后单击" 编辑"按钮.
    F.在里面在"编辑系统变量"对话框中,将目录添加到" 变量值"框中.使用分号将其与列表中的其他条目分开.
    G.单击" 确定"关闭" 编辑系统变量"对话框.
    H.单击" 确定"关闭" 环境变量"对话框.一世.单击" 确定"关闭" 系统属性"对话框.
  13. 现在,使用任何方法启动您的应用程序.Visual Studio将启动并加载应用程序

  • 天哪,为什么这件事如此复杂 (3认同)
  • 我喜欢这个答案,因为如果您的代码是在启用PDB的情况下构建的,那么它可以正常工作.如果在Release模式下构建,则上述Debugger.Launch()方法不起作用. (2认同)
  • 我还需要在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug 中添加一个字符串值,称为“Auto”,值为 1,因为没有那个 vsjitdebugger 在打开时失败 (2认同)

小智 9

另一个不错的解决方案是使用Visual Studio扩展"ReAttach".可以在这里找到.

如果您的进程当前未运行,ReAttach将要求您启动它并在可用时立即将其附加到该进程.


Ant*_*ott 8

当我在验收测试中启动控制台应用程序时,我一直在寻找一些方法.

我今天发现了这个 - https://blogs.msdn.microsoft.com/visualstudioalm/2014/11/24/introducing-the-child-process-debugging-power-tool/

它是视觉工作室的附加组件,它可以作为一种享受.当我调试验收测试(我使用resharper测试运行器)并在启动的应用程序中放置一个断点时,我现在可以在同一个Visual Studio实例中调试应用程序.

  • 这正是我正在寻找的!它允许在同一个 VS 实例中调试子进程。文档快速说明:“该强大工具需要本机调试器。这意味着如果您正在调试 .NET 代码,则必须选择启用混合模式调试` (2认同)

Pab*_*tyk 5

您还可以使用 Windows 调试工具附带的 gflags.exe 实用程序,您需要做的就是打开 gflags.exe 然后转到图像文件输入进程名称 (a.exe) 按 Tab 键并选中调试器复选框,在文本框中使用选项 /debugexe 输入 vs 路径(即“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe”/debugexe)

一旦进程运行,自动视觉工作室将打开,您可以添加断点并按运行。


Ric*_*dle 5

“ Entrian Attach”是一个精确执行此操作的Visual Studio加载项-您将可执行文件的名称告诉它,并在进程启动时附加调试器,而不管其启动方式如何,然后再运行任何代码。

(披露:我是作者。我建立了Attach,因为我一直都遇到这个问题!)