MSVC 2008,调试过程,无法调试

MSVC 2008, debugging process, can't debug

本文关键字:调试 过程 MSVC 2008      更新时间:2023-10-16

我已经在这个项目上工作了一段时间,它是一个遗留的DLL,我的职责是调整它以使用新版本的库。

我在Properties/C/C++/Preprocessor/Preprocessor Definitions 中定义的构建中添加了一个定义

我添加的定义称为CLSOPENLDV,行看起来像这样:

CLSOPENLDV;SP_DEBUG;WIN32;_WINDOWS;_USRDLL;

这是用来工作的,在我的代码中,我使用定义来测试和切换代码:

#pragma once
#if defined(CLSOPENLDV) && !defined(CLSOPENLDV_H)
#define CLSOPENLDV_H
#pragma comment(lib, "ldv32")
...
#endif

这一切过去都是有效的,上周我不得不切换回最初的构建,这是一个从属性中删除常量的简单例子,但现在我想回到原来的位置,但由于某种原因,我做不到,即使常量回到了属性中,预处理器也没有被构建识别,上面#if定义的测试中的代码是灰色的,我真的不确定为什么?

这可能与预编译头(pch)有关吗?

[编辑]事实上,这个问题并不是CLSOPENLDV独有的,其他定义SP_DEBUG也没有进入生成,并且该定义中包含的调试语句都没有启用。

[Edit2]我已经在调试器中设置了断点,但它也没有达到这些断点,这一切都在起作用——有些东西从根本上被破坏或禁用了。

这是一个比我最初认为的根本无法调试项目的问题。。。我连接到进程,但我的任何断点都不会被命中。我在"输出"窗格中看到了很多First change异常,但由于它只提供地址,所以不知道该在哪里查找。

[Edit4]仍在努力弄清楚发生了什么,下面是运行DLL时的转储,我做的唯一修改是调试/异常/C++异常,我选中了抛出复选框,所以它现在停止了,第一个异常上有一个异常对话框:

向下。斯卡达。AgentService.exe":已加载"C:\Program Files\Edwards\Agent Service\Edwards"。斯卡达。AgentService.exe',Binary不是使用调试信息生成的。"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\ntdll.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\mscoree.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\kernel32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\KernelBase.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\apphelp.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\apppatch\AcLayers.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\msvcrt.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\user32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\gdi32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\shell32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\cfgmgr32.dll"爱德华兹说。斯卡达。AgentService.exe':已加载"C:\Windows\System32\Windows.storage.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\combase.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\rpcrt4.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\bcryptprimities.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\advapi32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\sechost.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\shlwapi.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\kernel.appcore.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\SHCore.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\powrprof.dll"爱德华兹说。斯卡达。AgentService.exe':已加载"C:\Windows\System32\prosapi.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\oleout32.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\setupapi.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\mpr.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\sfc.dll"爱德华兹说。斯卡达。AgentService.exe':已加载'C:\Windows\System32\winspool.drv'"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\bcrypt.dll"爱德华兹说。斯卡达。AgentService.exe':已加载"C:\Windows\System32\sfc_os.dll"爱德华兹说。斯卡达。AgentService.exe':已加载'C:\Windows\Microsoft。NET\Framework\v4.0.30119\mscoreei.dll'"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\version.dll"爱德华兹说。斯卡达。AgentService.exe':已加载'C:\Windows\Microsoft。NET\Framework\v4.0.30119\clr.dll'"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\msvcr120_clr0400.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\6457d2c799b00351885b50b15ee8582\mscorlib.ni.dll"爱德华兹说。斯卡达。AgentService.exe":已加载"C:\Windows\System32\ole32.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System\d07dc4c7e25d0f1f688e96c3651ccbe3\System.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Serv759bfb78#\a8b225417d41e0ba6c21c1620ad7d05\System.ServiceProcess.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\cryptsp.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\rsaenh.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\cryptbase.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Core\c3edb3947295bb8762d800c029930c15\System.Core.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Configuration\2817463703ac432e3bbf54586b3d6b8b\System.Configuration.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Xml\9d354ba04e2414d763e9dea657f52fff\System.Xml.ni.dll"线程"Win32线程"(0x2084)已退出,代码为0(0x0)。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x4890000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x48b0000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x4890000"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Data\e6902ef5b9f4110e975dc92ff87e71d\System.Data.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\Microsoft.NET\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\ws2_32.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\crypt32.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\msasn1.dll"Edwards.Scada.AgentService.exe:0xC0000005:读取位置0x00000000时发生0x015e401a处的首次机会异常。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x4950000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x4960000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x4950000"线程"Win32线程"(0x25d4)已退出,代码为0(0x0)。线程"Win32线程"(0x13d0)已退出,代码为0(0x0)。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x50a0000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x50f0000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x50a0000"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.ServiceModel\dab9738fa2ffd706ad918f4854011580\System.ServiceModel.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Runt73a1fc9d#\0003c5ec8500bfe2571ef6b3768e3327\System.Runtime.Remoting.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\mswsock.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\NapiNSP.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\pnrpnsp.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\nlaapi.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\winrnr.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\dnsapi.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\nsi.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\rasadhlp.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\IPHLPAPI.DLL"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\FWPUCLNT.DLL"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x4970000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x50e000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x4970000"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\SMDiagnostics\5415baffc9d9111d58c8fe05d4e50c8a\SDiagnostics.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Servd1dec626#\71634b20929e9a6ed53d7acbffa0b93d\System.ServiceModel.Inerive.ni.dll"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x4970000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x5220000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x4970000"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Runteb92aa12#\dd6060246740eddfed31aeed179fb81f\System.Runtime.Serialization.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Web.Services\1150e9c52ad5088258dafbd0fce2ae07\System.Web.Services.ni.dll"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x5230000",未加载符号。"Edwards.Scada.AgentService.exe":已加载"ImageAtBase0x5280000",未加载符号。"Edwards.Scada.AgentService.exe":已卸载"ImageAtBase0x5230000"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Serv14259fd9#\f8ae5cc80236c0593f67d76495fccd46\System.ServiceModel.Activities.ni.dll"Edwards.Scada.AgentService.exe:0xE0434352:0xE0434352中0x74372ea2处的首次机会异常。"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.IdentityModel\43572b8748b627fcbeb032b3656f5810\System.IdentiityModel.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Net.Http\f37829993e81bb8c2121b954fda8e480\System.Net.Http.ni.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\httpapi.dll"Edwards.Scada.AgentService.exe":已加载"C:\Windows\System32\psapi.dll"Edwards.Scada.AgentService.exe中0x74372ea2处的首次机会异常:Microsoft C++异常:内存位置0x053dc524处的EEFileLoadException。.

第一行非常令人困惑,我已经检查了好几次项目构建,它是为调试而构建的。

[另一次编辑]我已经从SVN获得了昨天正在进行的项目,并完全删除了现有项目,从SVN提取了副本。我已经编译并测试了它,它现在像昨天一样崩溃了,我重新安装了MSVC,安装了service pack,并进行了一个工作项目和构建,但现在它没有调试和崩溃。

为什么?我还能尝试什么?

以下是stdafx.h:的内容

#include "stdafx.h"
#ifdef _ATL_STATIC_REGISTRY
#include <statreg.h>
#include <statreg.cpp>
#endif
#include <atlimpl.cpp>

这是C/C++的命令行:

/Od 
/I "......Legacy Common Files" 
/I "..nodetalk2include"
/I "..........Include" 
/D "CLSOPENLDV"
/D "SP_DEBUG"
/D "WIN32"
/D "_WINDOWS"
/D "_USRDLL"
/D "_VC80_UPGRADE=0x0600"
/D "_WINDLL" 
/D "_MBCS"
/FD /EHsc /MDd /Yc"stdafx.h" 
/Fp".Debug/FsLonPlayer.pch"
/Fo".Debug/" 
/Fd".Debug/" 
/W4 /nologo /c /Wp64 /Zi /TP /errorReport:prompt

[编辑]输出的最上面一行是转移注意力,它实际上指的是这个DLL所属的EXE,这个DLL是为调试而编译的,但已经说过了,它仍然不能解释为什么昨天它工作,我可以在调试器中看到源代码并在断点处停止,今天我不能。

需要将其移动到格式化的答案中。我认为@ZDF建议您替换以下行:

#if defined(CLSOPENLDV) && !defined(CLSOPENLDV_H)

带有

#if defined(CLSOPENLDV)

虽然我正在研究,但下一个建议可能不是一个长期的解决方案,但它应该提供一个数据点来帮助找出问题所在。创建一个新的头文件,其中只有这一行:

#define CLSOPENLDV

不要使用#include将其包含在任何位置,而是打开项目属性,进入C/C++->Advanced,并在Forced Include File字段中输入新头文件的完整路径。试试看会发生什么。

还有,另一个(可能是愚蠢的)想法。你能像一周半前那样从SCM仓库中提取项目文件的版本吗?

--编辑--

刚刚看到您对原始帖子的编辑。如果检查了实际.cpp文件的属性,则可以通过查看项目本身的属性,验证这两个定义是否存在,然后在解决方案资源管理器中单击.cpp文件来轻松完成此操作。这将带您进入文件本身的同一属性页。

我很想知道那里有什么节目。

这个项目非常大,并且构建中有多个子项目,结果发现构建中的其他项目之一导致了我的项目出现问题。在从SVN中检查出一个旧得多的树并构建它之后,我们现在可以找出故障项目的位置并进行修复。