调试器错误193 lazarus

时间:2018-07-29 11:49:42

标签: windows debugging lazarus freepascal

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

enter image description here

全文为:

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

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

  1. 如您所见,文件的路径不包含任何可能发生此问题的字符(没有空格,没有特殊字母)。我尝试在OneDrive之外运行,出现同样的错误。
  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 [])数组。

1 个答案:

答案 0 :(得分:3)

我认为我们通过一系列查询中的注释确定,引发您所遇到的调试器问题的必要和充分条件是在您的应用程序中包含您已经声明的数组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数组的前两个边界设置较小的值。如果这样可行,并且您仍然需要原始范围,我建议您寻找一个实现“稀疏数组”的FPC库,并声明p作为其中的一个。

祝你好运!