【发布时间】:2012-09-12 15:00:12
【问题描述】:
在这些情况下,在 Delphi XE2 更新 4 中调试可执行文件时,我得到了进一步提到的错误:
- 取决于来自 WebShpere 的
C:\Program Files \IBM\WebSphere MQ\bin\mqic.dll中的mqic.dll和C:\Program Files\IBM\WebSphere MQ\bin在系统路径上(而不是在用户路径上)。 - 正在使用
Run->Parameters->Debugger->Environment Block->User overrides中的覆盖环境变量进行调试 -
同一属性页上的
Including System Variables已选中
这是错误(这是标记为“系统错误”的 Windows DLL 加载错误)。
程序无法启动,因为您的计算机缺少 mqic.dll。尝试重新安装程序以解决此问题。
几点说明:
- 我以普通用户的身份进行调试(无论如何这都是正常的做法,但在这种情况下,由于客户端的政策,我不能成为管理员)。
- 只要我删除环境变量,它就可以工作(但程序会出错,因为它确实需要信息)。
- 在 Delphi 启动之前指定环境变量很麻烦,但作为一种临时解决方法是可行的(我需要在调试时经常更改该变量以测试不同的场景;Delphi 的启动/关闭时间使这变得乏味)。
- 我不能没有环境变量,因为它是应用程序所必需的,因为它没有源代码并且无法及时重写以使其被淘汰
这是事件日志显示的内容:
Faulting application name: CAS400NTMQ.exe, version: 1.1.4639.52512, time stamp: 0x50508180
Faulting module name: ntdll.dll, version: 6.1.7601.17725, time stamp: 0x4ec49b60
Exception code: 0xc0000005
Fault offset: 0x0005333f
Faulting process id: 0x4b20
Faulting application start time: 0x01cd90e36bb90816
Faulting application path: C:\Users\...\bin\CAS400NTMQ.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: a9853965-fcd6-11e1-ae66-78e3b5ca2514
问题:有没有比我上面使用的其他解决方案或更简单的解决方法?
【问题讨论】:
-
好吧,不知道为什么会发生这种情况,但简单的解决方法是编写一个批处理文件(.bat)来设置环境变量(使用 set)然后启动 Delphi。这就是您所说的繁琐,但批处理文件可以解决这个问题。或者使用 Windows 环境变量设置对话框在 IDE 之外创建用户环境变量。那么你就不需要管理员权限了。
-
顺便说一句,您声明您无法以管理员身份进行调试。听起来好像这样做是正常的做法。真的不是!
-
你是对的,它不是(我会强调这一点)。在这种情况下,即使需要,我也无法做到。
-
奇怪,
GetEnvironmentVariable('PATH')在调试时返回空字符串,否则正确路径。在“系统变量”中选择“PATH”,然后单击“添加覆盖”。值得一试.. -
只有在有覆盖的情况下才能观察到上一条评论中的行为,而不是在“用户覆盖”部分为空的情况下。 XE及以下似乎没有类似的问题。
标签: delphi debugging dll delphi-xe2