Tod*_*Tod 5 remote-debugging c++-cli visual-studio-2010 32bit-64bit visual-studio
首先让我说我可以远程调试远程计算机上的发布版本.我设置我的发布版本就像我的调试版本,但我大多数情况下必须确保没有设置Debug标志.我已经处理了一段时间,并最终决定试图找出为什么我必须经历这个.我还要提一下,我的远程调试经验仅限于这个项目,C#程序使用C++/CLI(用/ clr构建).DLL来调解一些关键的C++库.我不需要调试底层的C++库,但我需要调试C++/CLI代码.(我提到这个的一个原因是我在使用/ clr标志时无法静态链接库).
我最近发现了Dependency Walker,所以我用它来看看发生了什么.事实证明,调试标志设置,链接器链接在MSVCR100D.DLL和MSVCP100D.DLL中,当未设置标志时,它使用不带"D"后缀的文件.现在通常我可能只是将我的那些.DLL版本复制到远程机器上但是有问题.我的VS2010笔记本电脑是64位机器,目标机器是32位.这意味着我拥有的那些DLL的唯一版本是64位.我已经在远程机器上安装了VS2010的远程调试(我在2008年遇到了同样的问题),但它也不包括这些.DLL的调试版本(我不知道为什么,但我假设这是由设计).所以我的问题是:
CRT DLL的调试版本都可以使用标准的Visual Studio安装,包括x86版本,甚至在64位计算机上也是如此.
默认情况下,它们位于以下路径中:
<Program Files folder>\Microsoft Visual Studio 10.0\VC\redist\Debug_NonRedist
Run Code Online (Sandbox Code Playgroud)
在该文件夹下,您将找到两个附加文件夹(x64和x86),其中包含各个平台的这些DLL的调试版本.
但要特别注意文件夹(Debug_NonRedist)的名称.这表明这些调试DLL 不可再发行.对于拥有VS许可证的开发人员在另一台计算机上测试他/她的代码时使用它们肯定是可以的,但它们不应该分发到客户端计算机并用于运行您的应用程序.(听起来你的问题就是你知道这一点,但无论如何都值得指出未来的Google员工.)
或者,您可以更改Visual Studio项目链接到哪个版本的CRT DLL以用于特定项目配置.这意味着您可以编译应用程序的"调试"版本,但告诉Visual Studio链接到CRT的完整可再发行版本.
要做到这一点:
在解决方案资源管理器中右键单击您的项目,然后选择"属性".
确保在对话框顶部的下拉框中选择"调试"配置.
展开TreeView中的"C/C++"项,然后选择"代码生成".
将"运行时库"选项的设置更改为"多线程DLL(/ MD)"或"多线程(/ MT)".
请注意,您只是告诉Visual Studio 不要使用每个选项的"调试"变体.他们仍然意味着同样的事情.第一个将动态链接到DLL,第二个将CRT静态链接到您的应用程序.选择最适合您的情况.(我经常发现配置我的"Debug"版本以便为这样的实例静态链接很方便.)

| 归档时间: |
|
| 查看次数: |
2547 次 |
| 最近记录: |