如何从具有visual studio的其他计算机远程调试托管应用程序。这就是我的尝试:
msvsmon.exe
(64位版本,因为两台计算机都是64位)。msvsmon.exe
正在运行的机器的主机名。我在这里做错了什么?我正在尝试VS2008 Pro,两个系统上的操作系统都是Windows Server 2008 R2,如果重要的话。
注意:我可以使用远程传输调试非托管应用程序而不会出现任何问题。
答案 0 :(得分:5)
即使您的计算机是64位,请确保您运行的应用程序是64位。例如,如果要在远程计算机上调试32位应用程序,则需要运行32位版本的msvsmon.exe
这可能不是答案,但需要检查以确保。
2017年更新
由于过去几年我一直在使用远程调试,我已经注意到我通常需要解决的一些问题。
答案 1 :(得分:3)
我也失去了很多时间。 我发现让它100%工作的唯一方法是使用相同的域。使用VS2012,无需在同一个域中即可轻松连接。
但对于2008年,这对我有用(A = VS侧,B =没有VS的机器)
1)机器A(其中VS是)和B必须在同一个域中。 您还需要在B
上下载并安装VS Remote Debugger监视器2)您需要在B侧启动VS Remote调试器监视器,以允许传入连接。第一次启动时,它会配置防火墙以打开端口。 它还会显示它正在侦听的地址,即DOMAIN \ User @ hostname_B
3)在A上使用域管理员帐户运行VS,您将能够远程调试。要在调试中连接到B,请使用监视器
中步骤2中显示的地址希望它能帮到你!
答案 2 :(得分:2)
从Visual Studio 2012开始,您可以使用远程(无身份验证)传输来调试托管代码(之前的VS仅允许在远程模式下调试本机代码)。
答案 3 :(得分:2)
不是对OP的直接回答,但可能同样有用,并且已经多次从类似情况中挖出我。
我建议考虑安装WinDBG(或类似的),确保你有正确的符号\代码设置用于调试。 WinDBG有一个非常陡峭的学习曲线,但我相信它是值得的,即使在非常高的水平。它非常轻巧,这意味着它在原始文章的上下文中很有用,也可以在生产等中使用,其中安装类似VS的东西通常不是一种选择。
如果你匆忙,这可能不是一个选择,但从长远来看它值得做。
克里斯
PS:网上有一些很好的课程,尤其是在Pluralsight这样的网站上(我没有关系,除了是一个快乐的客户)答案 4 :(得分:1)
我花了很多时间来完成这项工作。但我成功了,现在完全调试我的托管应用程序。我按照此任务列表使其工作:
- 将目标PC添加到域并使用与使用Visual Studio的PC上相同的帐户登录。
- 运行正确的Visual Studio远程调试器(msvsmon.exe),我使用的是2010版本。
- 关闭目标PC上的防火墙。
- 在开发计算机上为devenv.exe(Visual Studio exe)添加Windows防火墙例外。
- 如果您将OracleVM用于虚拟PC,则网络适配器无法处于NAT模式(我使用过桥接适配器)。
- 要使用的调试地址是:DOMAIN \ USER @ PCNAME(例如MyGreatDomain \ Myself @ DEBUGPC)。
- 如果我使用“Debug-> Attach to Process”窗口开始调试,我还需要使用“Select”按钮编辑“Attach to:” - 我需要Managed(v4.0)代码,Native code
- pdb文件必须位于我用来运行exe的同一目录中。我将目录与我的exe和pdb直接映射到目标计算机。
- 在Visual Studio中我还必须转到Tools-> Options,展开Debugging-> General。并取消选中“启用我的代码”(仅限托管)。
使它工作真的很复杂,但以后节省了这么多时间......