以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- vbs 有没有什么好的调试办法? (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=85396) |
-- 作者:fwoods -- 发布时间:2015/9/18 17:07:35 -- vbs 有没有什么好的调试办法? 我自己做了一个框架,用起来都正常,但是只要在框架上切换了品种,然后点关闭,再打开,vbs就不工作了,我自己程序的事件也不会响应。 这时候,如果关闭金字塔,或者按停止vba的按钮,就会有非法退出错误。3.5版本会有dump文件产生。 用windbg分析 EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff) ExceptionAddress: 00000000 ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 00000000 Attempt to read from address 00000000 PROCESS_NAME: WinStock.exe ADDITIONAL_DEBUG_TEXT: Use \'!findthebuild\' command to search for the target build information. If the build information is available, run \'!findthebuild -s ; .reload\' to set symbol path and load symbols. FAULTING_MODULE: 7c920000 ntdll DEBUG_FLR_IMAGE_TIMESTAMP: 4802bdbd ERROR_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx" EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx" EXCEPTION_PARAMETER1: 00000000 EXCEPTION_PARAMETER2: 00000000 READ_ADDRESS: 00000000 FOLLOWUP_IP: oleaut32!VariantClear+58 770f4948 ebb9 jmp oleaut32!VariantClear+0x13 (770f4903) FAILED_INSTRUCTION_ADDRESS: +1e52faf0182df58 00000000 ?? ??? MOD_LIST: <ANALYSIS/> FAULTING_THREAD: 000008b0 BUGCHECK_STR: APPLICATION_FAULT_NULL_INSTRUCTION_PTR_NULL_POINTER_READ_WRONG_SYMBOLS PRIMARY_PROBLEM_CLASS: NULL_INSTRUCTION_PTR DEFAULT_BUCKET_ID: NULL_INSTRUCTION_PTR LAST_CONTROL_TRANSFER: from 770f4948 to 00000000 STACK_TEXT: WARNING: Frame IP not in any known module. Following frames may be wrong. 0012f6fc 770f4948 116f4ca4 00000000 0254b778 0x0 0012f710 73271819 0254b778 02550f28 0254b778 oleaut32!VariantClear+0x58 0012f738 7327d603 00000001 7c80980a 7327e38e vbscript+0x1819 0012f758 7327e01d 00000000 025375cc 02537418 vbscript!DllGetClassObject+0x24e6 0012f774 7327ddd6 00000000 02537418 00000000 vbscript!DllCanUnloadNow+0x852 0012f794 7328ef58 02537418 00000111 00d151f4 vbscript!DllCanUnloadNow+0x60b 0012f7c4 78669479 0273ba64 0012f7ec 7866965b vbscript!DllCanUnloadNow+0x1178d 0012f7d0 7866965b 0000801d 00000039 0000801d mfc90+0x89479 0012f7ec 7863c307 0000801d 00000000 00000000 mfc90+0x8965b 0012f83c 7863baef 00000000 00000000 571111d0 mfc90+0x5c307 0012f910 7863a656 00000111 0000801d 00000000 mfc90+0x5baef 0012f94c 78639190 786386b4 78638739 7863a79d mfc90+0x5a656 00000000 00000000 00000000 00000000 00000000 mfc90+0x59190 STACK_COMMAND: ~0s; .ecxr ; kb SYMBOL_STACK_INDEX: 1 SYMBOL_NAME: oleaut32!VariantClear+58 FOLLOWUP_NAME: MachineOwner MODULE_NAME: oleaut32 IMAGE_NAME: oleaut32.dll BUCKET_ID: WRONG_SYMBOLS FAILURE_BUCKET_ID: NULL_INSTRUCTION_PTR_c0000005_oleaut32.dll!VariantClear WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/WinStock_exe/3_6_4_0/55ee53d8/unknown/0_0_0_0/bbbbbbb4/c0000005/00000000.htm?Retriage=1 Followup: MachineOwner 看上去是vb申请的资源释放的时候引发了空指针引用,但是理论上vbs是怎么也不会引起空指针错误,如果有,也会在vb这个层次提示“找不到对象”。 如果用script debugger跟踪,基本上单步一步就死掉了。 请问版主有没有更好的跟踪或查错的办法?
|
-- 作者:王锋 -- 发布时间:2015/9/18 17:49:51 -- 一般我们调试都是用APPLICATION.MSGOUT函数进行的,但是你的情况导致软件崩溃,属于比较严重的问题,不排除金字塔自身含有BUG的可能,建议你升级到3。70版本,如果问题依旧,请留下联系方式,我们研发人员会联系你,与你共同来解决这个问题 |
-- 作者:fwoods -- 发布时间:2015/9/22 23:42:06 -- 问题已经解决了,想破了我的脑袋啊。 原来是我把这个Frame 中的 Grid保存到一个全局量里面了,导致Frame退出的时候内存释放不干净,再重入的时候就有了问题。 我的天,啥提示和错误都没有,直接非法操作。 |
-- 作者:王锋 -- 发布时间:2015/9/23 9:03:44 -- 这种内存操作的逻辑错误问题,别说金字塔,连微软都没有好的办法,只能靠自己提高编程和解决问题的能力提高来解决 |