分享

小精灵崩溃的原因(多线程运用不当),研究很久才找到出问题的原因!

 淳爷们 2013-08-28
其实问题很简单,但是你不注意,可能就会造成很多的麻烦,再次给大家做个示范,以示错误,警惕大家不用和我犯一样的错误!
大家看一段错误的代码:这个技能的子程序,如果当多线程调用一点问题也没有,可是当子程序调用,小精灵就崩溃,分析一下原因!

本帖隐藏的内容

  1. UserVar 技能按键1=65   "技能快捷键1(按键码)"

  2. UserVar 技能按键2=83  "技能快捷键2(按键码)"

  3. UserVar 技能按键3=68   "技能快捷键3(按键码)"

  4. UserVar 技能按键4=70   "技能快捷键4(按键码)"

  5. UserVar 技能按键5=71  "技能快捷键5(按键码)"

  6. UserVar 技能按键6=72   "技能快捷键6(按键码)"

  7. UserVar 技能按键7=112  "技能快捷键7(按键码)"

  8. UserVar 技能按键8=113  "技能快捷键8(按键码)"

  9. UserVar 技能按键9=114  "技能快捷键9(按键码)"

  10. UserVar 技能按键10=115 "技能快捷键10(按键码)" 

  11. UserVar 技能按键11=116 "技能快捷键11(按键码)"

  12. UserVar 技能按键12=117 "技能快捷键12(按键码)"

  13. Dimenv 技能1,技能2,技能3,技能4,技能5,技能6,技能7,技能8,技能9,技能10,技能11,技能12

  14. 技能1=技能按键1

  15. 技能2=技能按键2

  16. 技能3=技能按键3

  17. 技能4=技能按键4

  18. 技能5=技能按键5

  19. 技能6=技能按键6

  20. 技能7=技能按键7

  21. 技能8=技能按键8

  22. 技能9=技能按键9

  23. 技能10=技能按键10

  24. 技能11=技能按键11

  25. 技能12=技能按键12

  26. Do

  27. Call 技能按键()

  28. delay 1000

  29. Loop

  30. Sub 技能按键()

  31. 延迟 = Int((3 - 1 + 1) * Rnd + 1)

  32. dm.keypress 技能1

  33. delay 延迟*200

  34. dm.keypress 技能2

  35. delay 延迟*200

  36. dm.keypress 技能3

  37. delay 延迟*200

  38. dm.keypress 技能4

  39. delay 延迟*200

  40. dm.keypress 技能5

  41. delay 延迟*200

  42. dm.keypress 技能6

  43. delay 延迟*200

  44. dm.keypress 技能7

  45. delay 延迟*200

  46. dm.keypress 技能8

  47. delay 延迟*200

  48. dm.keypress 技能9

  49. delay 延迟*200

  50. dm.keypress 技能10

  51. delay 延迟*200

  52. dm.keypress 技能11

  53. delay 延迟*200

  54. dm.keypress 技能12

  55. delay 延迟*200

  56. End Sub

复制代码
崩溃的原因就是,子程序调用多线程的变量!!!!!
本来这程序,我是做成多线程使用的,但后来觉得没必要多线程,我就顺手当子程序使用了,孰不知这一时的省事带来了小精灵运行打这些代码的时候就崩溃,唉,
这段代码只要把子程序中的变量定义成一般变量小精灵就不崩溃啦!
问题就这么简单!
也可能是我个人原因吧,我只是截取了一部分代码,但是我只要用大漠插件按键,程序执行到这里必然崩溃,我也很无奈!
所以我改成按键自带的按键模拟了,小精灵就不崩溃了!
这段代码中没附带大漠注册的代码,如果想实验,可以自己加上!这个问题很模糊,可能只对我个人有问题,大家仅供参考!
  1. Your program raised an exception and should be closed. Please email hi@vrbrothers.com and report the error message. Thanks!

  2. =========================

  3. MyMacroBasic9.21.10865

  4. Environment = 1024x768|32|Microsoft Windows XP

  5. Type = 0xC0000005

  6. Address = 0x58268691

  7. LineNum = -1(-1)

  8. Registers:

  9. EAX=00250003 EBX=017EF650 ECX=00B2080C EDX=0000B208

  10. ESI=00238428 EDI=00080113 ESP=025EFF3C EBP=025EFF4C

  11. Current Modules:

  12. Name = 刷图_完美第一版.exe, Base = 0x400000, Top = 0x704000, Size = 3162112

  13. Name = ntdll.dll, Base = 0x7C920000, Top = 0x7C9B6000, Size = 614400

  14. Name = kernel32.dll, Base = 0x7C800000, Top = 0x7C91E000, Size = 1171456

  15. Name = MFC42.DLL, Base = 0x73D30000, Top = 0x73E2E000, Size = 1040384

  16. Name = msvcrt.dll, Base = 0x77BE0000, Top = 0x77C38000, Size = 360448

  17. Name = GDI32.dll, Base = 0x77EF0000, Top = 0x77F39000, Size = 299008

  18. Name = USER32.dll, Base = 0x77D10000, Top = 0x77DA0000, Size = 589824

  19. Name = ADVAPI32.dll, Base = 0x77DA0000, Top = 0x77E49000, Size = 692224

  20. Name = RPCRT4.dll, Base = 0x77E50000, Top = 0x77EE2000, Size = 598016

  21. Name = Secur32.dll, Base = 0x77FC0000, Top = 0x77FD1000, Size = 69632

  22. Name = SHELL32.dll, Base = 0x7D590000, Top = 0x7DD84000, Size = 8339456

  23. Name = SHLWAPI.dll, Base = 0x77F40000, Top = 0x77FB6000, Size = 483328

  24. Name = COMCTL32.dll, Base = 0x77180000, Top = 0x77283000, Size = 1060864

  25. Name = ole32.dll, Base = 0x76990000, Top = 0x76ACD000, Size = 1298432

  26. Name = OLEAUT32.dll, Base = 0x770F0000, Top = 0x7717B000, Size = 569344

  27. Name = urlmon.dll, Base = 0x7EAE0000, Top = 0x7EB81000, Size = 659456

  28. Name = VERSION.dll, Base = 0x77BD0000, Top = 0x77BD8000, Size = 32768

  29. Name = WINMM.dll, Base = 0x76B10000, Top = 0x76B3A000, Size = 172032

  30. Name = MSVCP60.dll, Base = 0x75FF0000, Top = 0x76055000, Size = 413696

  31. Name = WS2_32.dll, Base = 0x71A20000, Top = 0x71A37000, Size = 94208

  32. Name = WS2HELP.dll, Base = 0x71A10000, Top = 0x71A18000, Size = 32768

  33. Name = PSAPI.DLL, Base = 0x76BC0000, Top = 0x76BCB000, Size = 45056

  34. Name = IMAGEHLP.dll, Base = 0x76C60000, Top = 0x76C88000, Size = 163840

  35. Name = DINPUT8.dll, Base = 0x6D180000, Top = 0x6D1B6000, Size = 221184

  36. Name = WININET.dll, Base = 0x76680000, Top = 0x76726000, Size = 679936

  37. Name = CRYPT32.dll, Base = 0x765E0000, Top = 0x76673000, Size = 602112

  38. Name = MSASN1.dll, Base = 0x76DB0000, Top = 0x76DC2000, Size = 73728

  39. Name = UxTheme.dll, Base = 0x5ADC0000, Top = 0x5ADF7000, Size = 225280

  40. Name = OLEPRO32.DLL, Base = 0x5ED70000, Top = 0x5ED87000, Size = 94208

  41. Name = IMM32.DLL, Base = 0x76300000, Top = 0x7631D000, Size = 118784

  42. Name = LPK.DLL, Base = 0x62C20000, Top = 0x62C29000, Size = 36864

  43. Name = USP10.dll, Base = 0x73FA0000, Top = 0x7400B000, Size = 438272

  44. Name = MFC42LOC.DLL, Base = 0x61BE0000, Top = 0x61BED000, Size = 53248

  45. Name = MSCTF.dll, Base = 0x74680000, Top = 0x746CC000, Size = 311296

  46. Name = msctfime.ime, Base = 0x73640000, Top = 0x7366E000, Size = 188416

  47. Name = CLBCATQ.DLL, Base = 0x76FA0000, Top = 0x7701F000, Size = 520192

  48. Name = COMRes.dll, Base = 0x77020000, Top = 0x770BA000, Size = 630784

  49. Name = shdocvw.dll, Base = 0x7E550000, Top = 0x7E6C3000, Size = 1519616

  50. Name = CRYPTUI.dll, Base = 0x75430000, Top = 0x754A1000, Size = 462848

  51. Name = NETAPI32.dll, Base = 0x5FDD0000, Top = 0x5FE25000, Size = 348160

  52. Name = WINTRUST.dll, Base = 0x76C00000, Top = 0x76C2E000, Size = 188416

  53. Name = WLDAP32.dll, Base = 0x76F30000, Top = 0x76F5C000, Size = 180224

  54. Name = SXS.DLL, Base = 0x75E00000, Top = 0x75EAE000, Size = 712704

  55. Name = DBGHELP.dll, Base = 0x68D60000, Top = 0x68E01000, Size = 659456

  56. Name = mlang.dll, Base = 0x74CF0000, Top = 0x74D81000, Size = 593920

  57. Name = wsock32.dll, Base = 0x71A40000, Top = 0x71A4B000, Size = 45056

  58. Name = mswsock.dll, Base = 0x719C0000, Top = 0x719FE000, Size = 253952

  59. Name = hnetcfg.dll, Base = 0x60FD0000, Top = 0x61025000, Size = 348160

  60. Name = wshtcpip.dll, Base = 0x71A00000, Top = 0x71A08000, Size = 32768

  61. Name = RASAPI32.DLL, Base = 0x76EB0000, Top = 0x76EEC000, Size = 245760

  62. Name = rasman.dll, Base = 0x76E60000, Top = 0x76E72000, Size = 73728

  63. Name = TAPI32.dll, Base = 0x76E80000, Top = 0x76EAF000, Size = 192512

  64. Name = rtutils.dll, Base = 0x76E50000, Top = 0x76E5E000, Size = 57344

  65. ==>

  66. Name = MSScript.ocx, Base = 0x58260000, Top = 0x5827B000, Size = 110592

  67. Name = TASAntiPhishing_1.dll, Base = 0x10000000, Top = 0x1005D000, Size = 380928

  68. Name = MSVCP90.dll, Base = 0x78480000, Top = 0x7850E000, Size = 581632

  69. Name = MSVCR90.dll, Base = 0x78520000, Top = 0x785C3000, Size = 667648

  70. Name = msv1_0.dll, Base = 0x77C40000, Top = 0x77C65000, Size = 151552

  71. Name = cryptdll.dll, Base = 0x76760000, Top = 0x7676C000, Size = 49152

  72. Name = iphlpapi.dll, Base = 0x76D30000, Top = 0x76D48000, Size = 98304

  73. Name = appHelp.dll, Base = 0x76D70000, Top = 0x76D92000, Size = 139264

  74. Name = xpsp2res.dll, Base = 0x17F0000, Top = 0x1D39000, Size = 5541888

  75. Name = USERENV.dll, Base = 0x759D0000, Top = 0x75A7F000, Size = 716800

  76. Name = qdisp.dll, Base = 0xF70000, Top = 0xF7A000, Size = 40960

  77. Name = DNSAPI.dll, Base = 0x76EF0000, Top = 0x76F17000, Size = 159744

  78. Name = cfgdll.dll, Base = 0xFC0000, Top = 0xFCE000, Size = 57344

  79. Name = rasadhlp.dll, Base = 0x76F90000, Top = 0x76F96000, Size = 24576

  80. Name = VBScript.dll, Base = 0x73270000, Top = 0x732D9000, Size = 430080

  81. Name = DBSOFT.dll, Base = 0x11000000, Top = 0x11277000, Size = 2584576

  82. Name = MSVBVM60.DLL, Base = 0x73390000, Top = 0x734E3000, Size = 1388544

  83. Name = SETUPAPI.dll, Base = 0x76060000, Top = 0x761B6000, Size = 1400832

  84. Name = scrrun.dll, Base = 0x73510000, Top = 0x7353A000, Size = 172032

  85. Name = REGDLL.dll, Base = 0x12C0000, Top = 0x12C7000, Size = 28672

  86. Name = ATL.DLL, Base = 0x76AF0000, Top = 0x76B01000, Size = 69632

  87. Name = FILE.dll, Base = 0x3A50000, Top = 0x3A5B000, Size = 45056

  88. Name = comdlg32.dll, Base = 0x76320000, Top = 0x76367000, Size = 290816

  89. Name = wbemprox.dll, Base = 0x74E50000, Top = 0x74E58000, Size = 32768

  90. Name = wbemcomn.dll, Base = 0x751F0000, Top = 0x75227000, Size = 225280

  91. Name = wmiutils.dll, Base = 0x74F80000, Top = 0x74F99000, Size = 102400

  92. Name = wbemsvc.dll, Base = 0x74E30000, Top = 0x74E3E000, Size = 57344

  93. Name = fastprox.dll, Base = 0x755F0000, Top = 0x75666000, Size = 483328

  94. Name = NTDSAPI.dll, Base = 0x76770000, Top = 0x76783000, Size = 77824

  95. Name = WINDOW.dll, Base = 0x4680000, Top = 0x468C000, Size = 49152

  96. Name = WINSTA.dll, Base = 0x762D0000, Top = 0x762E0000, Size = 65536

  97. Name = dm.dll, Base = 0x2AF0000, Top = 0x2C72000, Size = 1581056

  98. Name = wbemdisp.dll, Base = 0x5A770000, Top = 0x5A79F000, Size = 192512

  99. Code Before:

  100. 08 E8 07 FB FF FF 85 C0 74 7D 83 4D FC FF 57 8B 7E 18 EB 22 

  101. Current Code:

  102. 0B 9F F8 00 00 00 8B CF E8 36 FA FF FF 3B 45 FC 73 0A 8B CF 

  103. Call Stack:

  104. 582687C0 ===> MSScript.ocx

  105. 77C0A3B0 ===> msvcrt.dll

  106. 7C80B729 ===> kernel32.dll

  107. 00000000

  108. Current Stack:

复制代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多