vba - “RSIVBA 模块已停止工作”消息的零星出现
问题描述
我正在使用 Factory Talk View Studio 7.00.00 (CPR 9 SR 6) 和 VBA 6.5 开发一个新的 HMI 项目。 有时在客户端启动时 VBA 崩溃并出现以下消息:
调试分析
下面我尝试尽可能详细地描述我所做的调试分析。如果您愿意,您可以直接跳到“最终考虑事项”一章。
我在我的开发计算机上打开了事件视图,并检索了有关该问题的以下信息,这些信息包含在两个不同的日志中:
日志 1
Log Name: Application
Source: Application Error
Date: 4/12/2019 11:36:47 AM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: C001234
Description:
Faulting application name: SEGfxVBACli.exe, version: 7.0.13.0, time stamp: 0x50e6de15
Faulting module name: VBE6.DLL, version: 6.5.10.32, time stamp: 0x471d25c7
Exception code: 0xc0000005
Fault offset: 0x00048ba2
Faulting process id: 0x24cc
Faulting application start time: 0x01d4f11339f7c9c0
Faulting application path: C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBACli.exe
Faulting module path: C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL
Report Id: 7d53c660-5d06-11e9-9097-001c428c3a57
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2019-04-12T09:36:47.000000000Z" />
<EventRecordID>33867</EventRecordID>
<Channel>Application</Channel>
<Computer>C001234</Computer>
<Security />
</System>
<EventData>
<Data>SEGfxVBACli.exe</Data>
<Data>7.0.13.0</Data>
<Data>50e6de15</Data>
<Data>VBE6.DLL</Data>
<Data>6.5.10.32</Data>
<Data>471d25c7</Data>
<Data>c0000005</Data>
<Data>00048ba2</Data>
<Data>24cc</Data>
<Data>01d4f11339f7c9c0</Data>
<Data>C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBACli.exe</Data>
<Data>C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL</Data>
<Data>7d53c660-5d06-11e9-9097-001c428c3a57</Data>
</EventData>
</Event>
日志 2
Log Name: Application
Source: Windows Error Reporting
Date: 4/12/2019 11:40:02 AM
Event ID: 1001
Task Category: None
Level: Information
Keywords: Classic
User: N/A
Computer: C001234
Description:
Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
P1: SEGfxVBACli.exe
P2: 7.0.13.0
P3: 50e6de15
P4: VBE6.DLL
P5: 6.5.10.32
P6: 471d25c7
P7: c0000005
P8: 00048ba2
P9:
P10:
Attached files:
These files may be available here:
<b>C:\Users\xfprocessor\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_SEGfxVBACli.exe_9918e682a9385aae53b328795e856d7cb5199e1b_27f321b3</b>
Analysis symbol:
Rechecking for solution: 0
Report Id: 7d53c660-5d06-11e9-9097-001c428c3a57
Report Status: 6
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Windows Error Reporting" />
<EventID Qualifiers="0">1001</EventID>
<Level>4</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2019-04-12T09:40:02.000000000Z" />
<EventRecordID>33868</EventRecordID>
<Channel>Application</Channel>
<Computer>C001234</Computer>
<Security />
</System>
<EventData>
<Data>
</Data>
<Data>0</Data>
<Data>APPCRASH</Data>
<Data>Not available</Data>
<Data>0</Data>
<Data>SEGfxVBACli.exe</Data>
<Data>7.0.13.0</Data>
<Data>50e6de15</Data>
<Data>VBE6.DLL</Data>
<Data>6.5.10.32</Data>
<Data>471d25c7</Data>
<Data>c0000005</Data>
<Data>00048ba2</Data>
<Data>
</Data>
<Data>
</Data>
<Data>
</Data>
<Data>C:\Users\xfprocessor\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_SEGfxVBACli.exe_9918e682a9385aae53b328795e856d7cb5199e1b_27f321b3</Data>
<Data>
</Data>
<Data>0</Data>
<Data>7d53c660-5d06-11e9-9097-001c428c3a57</Data>
<Data>6</Data>
</EventData>
</Event>
使用上述日志,我能够提取以下相关信息(如果您认为我遗漏了一些对调试目的可能很重要的内容,请告诉我):
- 日志 1
- 错误的应用程序是 SEGfxVBACli.exe,版本:7.0.13.0(RSIVBA 模块的别名,看这里)
- 故障模块为 VBE6.DLL,版本:6.5.10.32
- 错误的应用程序是 SEGfxVBACli.exe,版本:7.0.13.0(RSIVBA 模块的别名,看这里)
- 日志 2
- 此日志由 WER(Windows 错误报告)获取
- 此日志建议检查以下文件夹以获取更多信息:
C:\Users\xfprocessor\AppData\Local\Microsoft\Windows\WER\ReportQueue\AppCrash_SEGfxVBACli.exe_9918e682a9385aae53b328795e856d7cb5199e1b_27f321b3
在 Log 2 建议的路径中,我发现了一个名为Report.wer的文件,它似乎没有添加新的有用信息。下面是它的内容:
Version=1
EventType=APPCRASH
EventTime=131995354075640000
ReportType=2
Consent=1
ReportIdentifier=7d53c661-5d06-11e9-9097-001c428c3a57
IntegratorReportIdentifier=7d53c660-5d06-11e9-9097-001c428c3a57
Response.type=4
Sig[0].Name=Application Name
Sig[0].Value=SEGfxVBACli.exe
Sig[1].Name=Application Version
Sig[1].Value=7.0.13.0
Sig[2].Name=Application Timestamp
Sig[2].Value=50e6de15
Sig[3].Name=Fault Module Name
Sig[3].Value=VBE6.DLL
Sig[4].Name=Fault Module Version
Sig[4].Value=6.5.10.32
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=471d25c7
Sig[6].Name=Exception Code
Sig[6].Value=c0000005
Sig[7].Name=Exception Offset
Sig[7].Value=00048ba2
DynamicSig[1].Name=OS Version
DynamicSig[1].Value=6.1.7601.2.1.0.256.4
DynamicSig[2].Name=Locale ID
DynamicSig[2].Value=1033
DynamicSig[22].Name=Additional Information 1
DynamicSig[22].Value=0a9e
DynamicSig[23].Name=Additional Information 2
DynamicSig[23].Value=0a9e372d3b4ad19135b953a78882e789
DynamicSig[24].Name=Additional Information 3
DynamicSig[24].Value=0a9e
DynamicSig[25].Name=Additional Information 4
DynamicSig[25].Value=0a9e372d3b4ad19135b953a78882e789
UI[2]=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBACli.exe
UI[3]=RSIVBA Module has stopped working
UI[4]=Windows can check online for a solution to the problem the next time you go online.
UI[5]=Check online for a solution and close the program
UI[6]=Check online for a solution later and close the program
UI[7]=Close the program
LoadedModule[0]=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBACli.exe
LoadedModule[1]=C:\windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\windows\system32\kernel32.dll
LoadedModule[3]=C:\windows\system32\KERNELBASE.dll
LoadedModule[4]=C:\windows\system32\msi.dll
LoadedModule[5]=C:\windows\system32\msvcrt.dll
LoadedModule[6]=C:\windows\system32\ADVAPI32.dll
LoadedModule[7]=C:\windows\SYSTEM32\sechost.dll
LoadedModule[8]=C:\windows\system32\RPCRT4.dll
LoadedModule[9]=C:\windows\system32\USER32.dll
LoadedModule[10]=C:\windows\system32\GDI32.dll
LoadedModule[11]=C:\windows\system32\LPK.dll
LoadedModule[12]=C:\windows\system32\USP10.dll
LoadedModule[13]=C:\windows\system32\SHELL32.dll
LoadedModule[14]=C:\windows\system32\SHLWAPI.dll
LoadedModule[15]=C:\windows\system32\ole32.dll
LoadedModule[16]=C:\windows\system32\OLEAUT32.dll
LoadedModule[17]=C:\windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_50916076bcb9a742\MSVCR90.dll
LoadedModule[18]=C:\windows\WinSxS\x86_microsoft.vc90.atl_1fc8b3b9a1e18e3b_9.0.30729.4148_none_51ca66a2bbe76806\ATL90.DLL
LoadedModule[19]=C:\windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_50916076bcb9a742\MSVCP90.dll
LoadedModule[20]=C:\windows\system32\apphelp.dll
LoadedModule[21]=C:\windows\AppPatch\AcLayers.DLL
LoadedModule[22]=C:\windows\system32\SspiCli.dll
LoadedModule[23]=C:\windows\system32\USERENV.dll
LoadedModule[24]=C:\windows\system32\profapi.dll
LoadedModule[25]=C:\windows\system32\WINSPOOL.DRV
LoadedModule[26]=C:\windows\system32\MPR.dll
LoadedModule[27]=C:\windows\system32\IMM32.DLL
LoadedModule[28]=C:\windows\system32\MSCTF.dll
LoadedModule[29]=C:\windows\system32\CRYPTBASE.dll
LoadedModule[30]=C:\windows\system32\uxtheme.dll
LoadedModule[31]=C:\Program Files\Common Files\Rockwell\rsDbgUtils.dll
LoadedModule[32]=C:\Program Files\Common Files\Rockwell\DbgHelp.dll
LoadedModule[33]=C:\windows\system32\CLBCatQ.DLL
LoadedModule[34]=C:\windows\system32\CRYPTSP.dll
LoadedModule[35]=C:\windows\system32\rsaenh.dll
LoadedModule[36]=C:\windows\system32\RpcRtRemote.dll
LoadedModule[37]=C:\windows\system32\msiltcfg.dll
LoadedModule[38]=C:\windows\system32\VERSION.dll
LoadedModule[39]=C:\windows\system32\SFC.DLL
LoadedModule[40]=C:\windows\system32\sfc_os.DLL
LoadedModule[41]=C:\windows\system32\SXS.DLL
LoadedModule[42]=C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\apc65.dll
LoadedModule[43]=C:\windows\system32\dwmapi.dll
LoadedModule[44]=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBAPs.dll
LoadedModule[45]=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBAComPs.dll
LoadedModule[46]=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxRoiCli.dll
LoadedModule[47]=C:\Program Files\Common Files\Microsoft Shared\office11\mso.dll
LoadedModule[48]=C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\VBE6.DLL
LoadedModule[49]=C:\Program Files\Common Files\Microsoft Shared\OFFICE11\gdiplus.dll
LoadedModule[50]=C:\windows\system32\WTSAPI32.DLL
LoadedModule[51]=C:\windows\system32\WINSTA.dll
LoadedModule[52]=C:\windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\Comctl32.dll
LoadedModule[53]=C:\PROGRA~1\COMMON~1\MICROS~1\VBA\VBA6\1033\VBE6INTL.DLL
LoadedModule[54]=C:\windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18201_none_ec80f00e8593ece5\COMCTL32.DLL
LoadedModule[55]=C:\windows\system32\riched20.dll
FriendlyEventName=Stopped working
ConsentKey=APPCRASH
AppName=RSIVBA Module
AppPath=C:\Program Files\Rockwell Software\RSView Enterprise\SEGfxVBACli.exe
此时,我通过添加以下关键 Windows 寄存器在我的开发 PC 上启用了应用程序崩溃日志(有关更多信息,请参见此处):
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows 错误 LocalDumps
我重新启动了我的开发电脑,然后我试图通过关闭和打开客户端几次来重现崩溃。客户端崩溃后,由于有了新密钥,我在以下路径中找到了文件 SEGfxVBACli.exe.10136.dmp 文件:%LOCALAPPDATA%/CrashDumps。我使用 Windbg 打开了这个文件,发现了一些有用的信息:
Microsoft (R) Windows Debugger Version 10.0.18317.1001 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\c264079\Desktop\SEGfxVBACli.exe.10136.dmp]
User Mini Dump File: Only registers, stack and portions of memory are available
Symbol search path is: srv*
Executable search path is:
Windows 7 Version 7601 (Service Pack 1) MP (2 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Fri Apr 12 14:19:13.000 2019 (UTC + 2:00)
System Uptime: not available
Process Uptime: 0 days 0:01:37.000
........................................................
Loading unloaded module list
......
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(2798.27a0): Access violation - code c0000005 (first/second chance not available)
For analysis of this file, run !analyze -v
eax=00000000 ebx=0012dd04 ecx=00000400 edx=00000000 esi=00000002 edi=00000000
eip=774a70f4 esp=0012dcb4 ebp=0012dd50 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!KiFastSystemCallRet:
774a70f4 c3 ret
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
KEY_VALUES_STRING: 1
Key : AV.Dereference
Value: NullPtr
Key : AV.Fault
Value: Read
Key : Timeline.Process.Start.DeltaSec
Value: 97
PROCESSES_ANALYSIS: 1
SERVICE_ANALYSIS: 1
STACKHASH_ANALYSIS: 1
TIMELINE_ANALYSIS: 1
Timeline: !analyze.Start
Name: <blank>
Time: 2019-04-12T12:50:57.499Z
Diff: 1904499 mSec
Timeline: Dump.Current
Name: <blank>
Time: 2019-04-12T12:19:13.0Z
Diff: 0 mSec
Timeline: Process.Start
Name: <blank>
Time: 2019-04-12T12:17:36.0Z
Diff: 97000 mSec
DUMP_CLASS: 2
DUMP_QUALIFIER: 400
CONTEXT: (.ecxr)
eax=00000000 ebx=00000000 ecx=003a9cd0 edx=00000030 esi=7598ad60 edi=00000000
eip=65048ba2 esp=0012e460 ebp=0012e4ec iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246
VBE6+0x48ba2:
65048ba2 3b0c98 cmp ecx,dword ptr [eax+ebx*4] ds:0023:00000000=????????
Resetting default scope
FAULTING_IP:
VBE6+48ba2
65048ba2 3b0c98 cmp ecx,dword ptr [eax+ebx*4]
EXCEPTION_RECORD: (.exr -1)
ExceptionAddress: 65048ba2 (VBE6+0x00048ba2)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00000000
Attempt to read from address 00000000
DEFAULT_BUCKET_ID: NULL_POINTER_READ
PROCESS_NAME: SEGfxVBACli.exe
FOLLOWUP_IP:
VBE6+48ba2
65048ba2 3b0c98 cmp ecx,dword ptr [eax+ebx*4]
READ_ADDRESS: 00000000
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.
EXCEPTION_CODE_STR: c0000005
EXCEPTION_PARAMETER1: 00000000
EXCEPTION_PARAMETER2: 00000000
WATSON_BKT_PROCSTAMP: 50e6de15
WATSON_BKT_PROCVER: 7.0.13.0
WATSON_BKT_MODULE: VBE6.DLL
WATSON_BKT_MODSTAMP: 471d25c7
WATSON_BKT_MODOFFSET: 48ba2
WATSON_BKT_MODVER: 6.5.10.32
BUILD_VERSION_STRING: 6.1.7601.18409 (win7sp1_gdr.140303-2144)
MODLIST_WITH_TSCHKSUM_HASH: 7519ad49d50c93fe826d48b825b7f6a3f5f3a5f1
MODLIST_SHA1_HASH: 1fa60f616645a1dc8e31d4ee0210404172dd8bbf
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
DUMP_FLAGS: 94
DUMP_TYPE: 1
ANALYSIS_SESSION_HOST: HYBRID-PVCR502N
ANALYSIS_SESSION_TIME: 04-12-2019 14:50:57.0499
ANALYSIS_VERSION: 10.0.18317.1001 x86fre
THREAD_ATTRIBUTES:
OS_LOCALE: ENU
BUGCHECK_STR: APPLICATION_FAULT_NULL_POINTER_READ_INVALID_POINTER_READ
PRIMARY_PROBLEM_CLASS: APPLICATION_FAULT
PROBLEM_CLASSES:
ID: [0n313]
Type: [@ACCESS_VIOLATION]
Class: Addendum
Scope: BUCKET_ID
Name: Omit
Data: Omit
PID: [Unspecified]
TID: [0x27a0]
Frame: [0] : VBE6
ID: [0n285]
Type: [INVALID_POINTER_READ]
Class: Primary
Scope: BUCKET_ID
Name: Add
Data: Omit
PID: [Unspecified]
TID: [0x27a0]
Frame: [0] : VBE6
ID: [0n300]
Type: [NULL_POINTER_READ]
Class: Primary
Scope: DEFAULT_BUCKET_ID (Failure Bucket ID prefix)
BUCKET_ID
Name: Add
Data: Omit
PID: [0x2798]
TID: [0x27a0]
Frame: [0] : VBE6
LAST_CONTROL_TRANSFER: from 65042b40 to 65048ba2
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0012e4ec 65042b40 0012e580 02d73cd0 02d74428 VBE6+0x48ba2
0012e5c8 775b63a4 0012e5e0 00000000 00000000 VBE6+0x42b40
0012e5f0 775b6276 001609ab 0012e630 775b625c msctf!InternalIMCCLock::_UnlockIMCC+0x1b
0012e5fc 775b625c 00000000 0012e6ac 00000113 msctf!IMCLock::_UnlockIMC+0xd
0012e620 75996445 00000102 7c903014 0012e65c msctf!IMCLock::~IMCLock+0x19
0012e630 7599c4e7 003e093e 00001086 00000000 user32!NtUserPeekMessage+0xc
0012e65c 7599c5e7 65099750 003e093e 00001086 user32!InternalCallWinProc+0x23
0012e6d4 7599cc19 00000000 65099750 003e093e user32!UserCallWinProcCheckWow+0x14b
0012e734 7599cc70 65099750 00000000 75992b4d user32!DispatchMessageWorker+0x35e
0012e744 0041f82f 0012e768 0012e7bc 003f7c58 user32!DispatchMessageW+0xf
0012e74c 0012e7bc 003f7c58 0012e7c0 00000000 SEGfxVBACli+0x1f82f
0012e768 00000000 00000000 00000000 00054604 0x12e7bc
THREAD_SHA1_HASH_MOD_FUNC: 4a6e6f8baf4776e223752f735125cfd7390b30f6
THREAD_SHA1_HASH_MOD_FUNC_OFFSET: fa693dbd1eac843a3924e4c82ce5d8d2be28b6a9
THREAD_SHA1_HASH_MOD: 04a56d9ed1b188a6cdecf8d621467fac390273f4
FAULT_INSTR_CODE: 75980c3b
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: VBE6+48ba2
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: VBE6
IMAGE_NAME: VBE6.DLL
DEBUG_FLR_IMAGE_TIMESTAMP: 471d25c7
STACK_COMMAND: ~0s ; .ecxr ; kb
FAILURE_BUCKET_ID: NULL_POINTER_READ_c0000005_VBE6.DLL!Unknown
BUCKET_ID: APPLICATION_FAULT_NULL_POINTER_READ_INVALID_POINTER_READ_VBE6+48ba2
FAILURE_EXCEPTION_CODE: c0000005
FAILURE_IMAGE_NAME: VBE6.DLL
BUCKET_ID_IMAGE_STR: VBE6.DLL
FAILURE_MODULE_NAME: VBE6
BUCKET_ID_MODULE_STR: VBE6
FAILURE_FUNCTION_NAME: Unknown
BUCKET_ID_FUNCTION_STR: Unknown
BUCKET_ID_OFFSET: 48ba2
BUCKET_ID_MODTIMEDATESTAMP: 471d25c7
BUCKET_ID_MODCHECKSUM: 281c17
BUCKET_ID_MODVER_STR: 6.5.10.32
BUCKET_ID_PREFIX_STR: APPLICATION_FAULT_NULL_POINTER_READ_INVALID_POINTER_READ_
FAILURE_PROBLEM_CLASS: APPLICATION_FAULT
FAILURE_SYMBOL_NAME: VBE6.DLL!Unknown
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/SEGfxVBACli.exe/7.0.13.0/50e6de15/VBE6.DLL/6.5.10.32/471d25c7/c0000005/00048ba2.htm?Retriage=1
TARGET_TIME: 2019-04-12T12:19:13.000Z
OSBUILD: 7601
OSSERVICEPACK: 18409
SERVICEPACK_NUMBER: 0
OS_REVISION: 0
SUITE_MASK: 256
PRODUCT_TYPE: 1
OSPLATFORM_TYPE: x86
OSNAME: Windows 7
OSEDITION: Windows 7 WinNt (Service Pack 1) SingleUserTS
USER_LCID: 0
OSBUILD_TIMESTAMP: 2014-03-04 10:16:37
BUILDDATESTAMP_STR: 140303-2144
BUILDLAB_STR: win7sp1_gdr
BUILDOSVER_STR: 6.1.7601.18409
ANALYSIS_SESSION_ELAPSED_TIME: 28ba2
ANALYSIS_SOURCE: UM
FAILURE_ID_HASH_STRING: um:null_pointer_read_c0000005_vbe6.dll!unknown
FAILURE_ID_HASH: {2bab7801-cedf-2d01-08e7-be358bc1f51e}
Followup: MachineOwner
---------
我在上面报告的文件中发现的有趣信息是:
ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%p 处的指令引用了 0x%p 处的内存。内存不能是 %s。
最后的考虑
所以,经过上面的分析,客户端启动时RSIVBA模块的零星崩溃似乎是由于试图引用非法内存区域的指令。奇怪的是,这种情况偶尔会发生......
我试过无法弄清楚哪个指令会产生这个错误。有人遇到过这个问题吗?
解决方案
经过几天的挣扎,我终于找到了问题的根源!现在我将解释导致问题的原因。如果您对 FactorkTalk View Studio (FTV) 有一些了解会更容易,但我会在解释过程中尽量笼统,因为我认为即使在其他集成了 VBA 的系统上也可能发生这种错误。
在 FTV 上,您可以创建一个 HMI 服务器,其中包含称为“显示器”的项目,这些项目可以显示给通过 Factory Talk View Client (FTVc) 访问 HMI 的用户。
每个显示都有自己的 VBA 模块,当显示显示时,可以在 VBA 端处理的以下事件将按此顺序发生:
- Application_DisplayLoad
- Display_Load
- Display_AnimationStart
- 显示_激活
在我的一个显示器中,在它的 Display_Load 事件中,我正在执行一些对象初始化,并查看 Rockwell 对 Display_Load 事件的看法:
评论
- 当显示没有动画时,ActiveX 控件将不会被激活并且与它们的交互可能会受到限制。
- 当显示未设置动画时,不允许对 Graphics 对象进行属性写入和方法调用,这将导致引发错误。
尝试猜测...在 Display_Load 中,我正在编写 Graphics 对象的属性...所以我只是将我的代码移动到事件 Display_AnimationStart 中,因为在那里执行的代码肯定会找到正确激活的所有图形对象。看看 Rockwell 对 Display_AnimationStart 事件的评价:
评论
- 此事件在显示中的所有元素都被激活后发生。此时,您可以读取和写入元素属性并调用元素方法。
现在崩溃不再发生。
推荐阅读
- gerrit - 如何在 Gerrit 中删除注释引用
- javascript - Typescript 泛型类型 - 类型“keyof T1”不能用于索引类型
- mongodb - 选择引用具有某些特定属性的另一行的行
- mongodb - 命令 findAndModify 失败:不支持修改或使用 Decimal128 值
- multi-tenant - abp.io 在登录屏幕上解析租户
- python - 在每次跳过一个项目的python列表中查找所有可能的组合
- mysql - 如何从左连接三个表中选择本月的总和
- django - Django、FastAPI 和 DRF
- imageresizer - 使用 ImageResizer 时的 MacOS/Safari 双扩展
- ios - 目标 c 中的 Round Double 值