调试器错误 193 拉撒路

Debugger error 193 lazarus

我已经有一年无法调试我的程序了。当我按下绿色 运行 按钮时,出现以下错误消息:

全文为:

The GDB command:
"-exec-run"
returned the error:
",msg="Error creating process C:/Users/leven/OneDrive/J1t1kpogramok/People/people.exe, (error 193).""

我已经阅读了很多关于此错误的论坛,但我的情况看起来有点不同...

  1. 如您所见,文件路径不包含任何可能出现此问题的字符(没有空格,没有特殊字母)。我在 OneDrive 外试过 运行ning,同样的错误。
  2. 我花了很多时间在我的程序中寻找发生这个错误的东西,发现如果我删除它的某些部分(例如,一些过程或函数,虽然其中包含很多代码) ,程序又可以调试了!所以问题出在程序的某些部分,但我仍然不知道确切的问题。
  3. 据我所知,我一直在 64 位 OP 中调试这个程序。
  4. 可能有问题的一件事是我可能开始使用 Windows 7 或 8 编写程序,现在我想 运行 使用 Windows 10,但是我还是不明白,为什么删掉程序的某些部分是一个解决方案...

在此先感谢您的帮助!

更新:

我发现

p[x,y,2,1]:=r;

编译器无法调试。 说明:

p: array [1..15000, 1..10000, 1..7, 1..4] of integer;

p[]是游戏场。前两个参数是坐标,第三个和第四个不重要。

x、y 和 r 是整数。

因此,上面看到的命令使用 x、y 坐标将数字写入游戏字段 (p[]) 数组。

我认为我们通过评论中的一系列查询确定了引发调试器问题的充分必要条件是在您的应用程序中包含您声明的数组 p已添加到您的q中,即:

var
  p: array [1..15000, 1..10000, 1..7, 1..4] of integer;

对您来说,似乎只要在您的代码中包含此声明就足以使调试器抛出您引用的错误。

对我来说,调试器启动正常,但在以下代码中分配给 p[] 时出现 SIGSEGV 错误:

var
  p: array [1..15000, 1..10000, 1..7, 1..4] of integer;
  x,
  y,
  r : integer;

begin
  x := 100;
  y := 100;
  r := 666;
  p[x, y, 1, 1] := r;
  writeln('Press any key ...');
  readln;
end.

因此,我会为 p 数组的前两个边界尝试较小的值。如果可行并且您仍然需要原始边界,我建议寻找一个实现 "sparse arrays" 的 FPC 库并将 p 声明为其中之一。

祝你好运!