通过批处理模式运行脚本时DXL错误。 (堆栈下溢)

时间:2019-02-19 11:42:43

标签: ibm-doors

我有一段.dxl代码,可以打开一个模块并修改一些属性。这些代码在Doors DXL编辑器中运行良好,没有任何错误,但是当我尝试通过Doors Batch File模式执行代码时得到一个讨厌的崩溃转储,并显示以下错误: 我从cmd运行的命令:

doors -d 36677@SERVER-ADDRESS -u my_username -P my_password -b "D:\my_script.dxl" -maxMemory 9999

和错误:

-R-E- DXL: <Line:0> Stack Underflow
DOORS: **** Translating a structured exception ****
DOORS: Version 9.3.0.6, build number 93576, built on Nov 29 2011 22:40:09.
DOORS: Microsoft Enterprise Edition (build 9200), 64-bit
DOORS: DOORS: 43 percent of memory is in use.
DOORS: There are 2097151 total Kbytes of physical memory.
DOORS: There are 2097151 free Kbytes of physical memory.
DOORS: There are 4194303 total Kbytes of paging file.
DOORS: There are 4194303 free Kbytes of paging file.
DOORS: There are 1fff80 total Kbytes of virtual memory.
DOORS: There are 1aab84 free Kbytes of virtual memory.

DOORS: argv[0]: doors
DOORS: argv[1]: -d
DOORS: argv[2]: 36677@SERVER-ADDRESS
DOORS: argv[3]: -u
DOORS: argv[4]: my_username
DOORS: argv[5]: -P
DOORS: argv[6]: my_password
DOORS: argv[7]: -b
DOORS: argv[8]: D:\my_script.dxl
DOORS: argv[9]: -maxMemory
DOORS: argv[10]: 9999
DOORS: Exception timestamp: 19/02/2019 at 13:37:19
DOORS: doors.exe caused an EXCEPTION_ACCESS_VIOLATION in module doors.exe at 0023:00826126
DOORS: 0023:00826126 (0x00000000 0x00000000 0x00000000 0x00000000) doors.exe
DOORS: **** end of event ****
DOORS: Writing exception details...
DOORS: Exception details have been written to: d:\temp\DOORS-93576-2019_02_19-13_37_19-9808-5268.dmp

Press return to exit DOORS.

我猜该错误是由于内存分配所致,但我对此一无所知。从批处理模式运行时,是否有任何内存限制?事实是,它说“门:正在使用的内存占43%” ,并且在运行代码/打开模块时要占用任务管理器,以防占用大约120 MB的RAM。

如果需要,我也可以提供故障转储。

3 个答案:

答案 0 :(得分:1)

您可以提供正在运行的代码吗?

与常规环境相比,某些dxl命令在批处理模式下无法正常工作,大多数与视图/窗口配置有关。

答案 1 :(得分:0)

摘要: Bregman是正确的,张贴DXL,或至少张贴第一行。是的,批处理模式不允许某些命令。 我说摆脱-maxMemory命令行开关。

讨论: 首先,该转储仅对调试doors.exe本身的核心IBM书呆子有用。在经历过千分之十的错误中,我从未使用过它来调试DXL。我也没有看过使用它的帖子。 (但是,“ arg”列表有时很有用)。不要打扰它。您非常正确地列出了服务器名,用户名和密码。

DXL窗口错误是重要的错误,我看到您给了我们: -R-E- DXL:堆栈下溢 通常也有一些跟踪信息。

我不熟悉“ -maxMemory 9999”命令行开关。我的笔记上有一个问号,这意味着专家MM先生不知道它做什么,如果有的话。我当然不会。

我强烈怀疑这是您的问题。不管它做什么,您都不需要它,将其删除。在第0行出现错误(它的含义似乎是“在解释后但在执行第1行之前”),这与初始化期间内存不足是一致的。请理解DXL中的第一行是第1行。 。不是第0行。

如果您坚持要保留它:如果它看起来像那样,我猜数字是“字节”,而9999太小了,请尝试2 gig:2000000000或4gig。我想现在无论如何默认值为4gig,并且该开关是为了减少内存消耗。但我完全不知道这有什么用。

我很好奇你从哪里得到的。

-路易

答案 2 :(得分:0)

由于内存使用过多而导致执行崩溃,这是由于脚本在已保存的视图(大量数据)中打开模块而发生的,因此将其更改为仅读取标准视图即可正常工作:

m = read(modName,false)

收件人:

m = read(modName,false,true)