我有一段.dxl代码,它打开一个模块并修改一些attributes.The代码,在Doors DXL编辑器中工作得很好,没有任何错误,但当我试图通过doors批处理文件模式执行代码时,我得到了一个讨厌的崩溃转储,错误如下:我从命令运行的命令:
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 %”,以防它占用大约120MB的内存。
如果需要,我也可以提供崩溃转储。
发布于 2019-02-19 21:53:57
你能提供正在运行的代码吗?
与常规环境相比,一些dxl命令在批处理模式下不能正常工作,大多数命令与视图/窗口配置有关。
发布于 2019-04-09 03:46:34
摘要: Bregman是正确的,请张贴DXL,或者至少前几行。是的,批处理模式不允许某些命令。我建议去掉-maxMemory命令行开关。
讨论:首先,这个转储只对那些自己调试doors.exe的IBM书呆子有用。在我遇到的数以千计的错误中,我从来没有用过它来调试DXL;我也没有见过一个使用它的帖子。(但是,"arg“列表有时也很有用)。别费心把它贴出来了。您删除服务器名称、用户名和密码是非常正确的。
DXL窗口错误是一个重要的错误,我看到你给了我们:-R-E- DXL:堆栈下溢通常也有一些跟踪信息。
我不熟悉"-maxMemory 9999“命令行开关。我的笔记上有一个问号,这意味着专家MM先生不知道它是做什么的。我当然不会。
我强烈怀疑这就是你的问题。不管它做什么,你不需要它,把它去掉。在第0行(看起来是“在解释之后但在执行第1行之前”)出现错误的事实与初始化期间内存不足是一致的。要知道,DXL中的第1行是第1行,而不是第0行。
如果你坚持保留它:如果它的行为像它看起来的那样,我猜它的数字是“字节”,9999是无可救药的小,试试2gig: 2000000000,或4gig。我假设现在的默认值是4G,这个开关是为了减少内存占用;但我不知道这有什么用。
我很好奇你从哪里弄来的。
-Louie
发布于 2020-02-13 12:56:06
由于内存使用过多,导致执行崩溃,这是由于脚本在保存的视图(大量数据)中打开模块而发生的,因此将其更改为仅读取标准视图,它可以正常工作:
m = read(modName,false)
至:
m = read(modName,false,true)
https://stackoverflow.com/questions/54765532
复制相似问题