【问题标题】:Error when trying to debug a 64-bit console application [duplicate]尝试调试 64 位控制台应用程序时出错 [重复]
【发布时间】:2020-01-08 18:19:03
【问题描述】:

我尝试在 Delphi 10.3.3 Rio 中调试一个简单的 64 位控制台应用程序:

program ShellLinkShortcutTest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  JclShell,
  System.SysUtils;

const
  ShortcutFile = 'R:\myshortcut.lnk';
  ShortcutTarget = 'C:\Windows\System32\notepad.exe';

function SaveShortcutShellLink(const AFile: string): string;
var
  SL: JclShell.TShellLink;
  HR: Integer;
begin
  Result := 'error';

  SL.Target := ShortcutTarget;
  SL.Description := 'My description';
  HR := JclShell.ShellLinkCreate(SL, AFile);
end;

begin
  try
    Writeln(SaveShortcutShellLink(ShortcutFile));
    Readln;
  except
    on E: Exception do
    begin
      Writeln(E.ClassName, ': ', E.Message);
      Readln;
    end;
  end;
end.

但是当我按下 F9 时,我会收到以下错误消息:

更奇怪的是:wmcipc.cpp文件不存在!

但是,调试与 32 位相同的程序没有问题。

我的操作系统:Windows 7 x64 SP1

这里有什么问题?

【问题讨论】:

  • 您是否已通过代码查看错误发生的位置?
  • 正如我所说,只要按 F9 就会出现错误消息。所以我什至无法单步执行代码。
  • 你是在第一行代码设置断点吗?您的代码可以编译,但不会抛出您在我的盒子上看到的错误。我能够通过在 writeln 语句上设置断点来单步执行代码,并按照代码向下查找错误。您的 SaveSHortcutShellLink 始终返回“错误”并且不检查 HR 返回。
  • 这与代码无关。我的机器上的调试好像坏了。

标签: delphi delphi-10.3-rio


【解决方案1】:

但是当我按下 F9 时,我会收到以下错误消息:

这是 Delphi 64 位调试器中一个非常古老且众所周知的错误:

https://forums.embarcadero.com/thread.jspa?messageID=712725

它有一个简单的修复:

以管理员身份打开命令提示符,然后运行

netsh winsock 重置

重新启动后,您的 64 位调试器应该会再次工作。

 

更奇怪的是:wmcipc.cpp文件不存在!

它不应该存在于您的机器上。您看到的是调试器本身引发的断言错误,而不是来自您的项目。 wmcipc.cpp 源文件是调试器实现的内部文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2014-03-30
    • 2012-02-22
    • 2017-05-22
    • 2010-11-07
    • 2011-12-25
    • 2013-11-05
    相关资源
    最近更新 更多