Инструкция по установке MS Script Editor. Требуется дистрибутив MS Office.Infocatcher wrote:Не удается инициализировать приложение для отладки.
Scripts discussion (2)
- Author
- Message
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Instructor
У меня оказался уже установлен некий Microsoft Script Editor 10.0 (и MS Office 2003), но там все по-другому.
Но статья натолкнула на С:\Program Files\Common Files\Microsoft Shared\VS7Debug\VS7JIT.EXE, я это дело потыкал, оно ругнулось на
Я нагуглил HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings\JITDebug, выставил там 1.
Теперь из Script Editor можно прицепиться к процессу. Изначально тоже можно было, но безрезультатно. И потом надо выбрать Debug – Break All.
В общем, оно открывает работающий скрипт, можно выполнять его пошагово, но в момент падения ничего не происходит.
Падает где-то тут:
(галочку в списке скриптов пока что больше не проверял)
Upd:
Падает вот тут:
Upd #2:
Однако, если закомментировать statusbar.restore();, то все равно иногда падает.
И падает уже на
Upd #3:
А с галочкой в самом плагине по-прежнему глухо, «Не удается инициализировать приложение для отладки».
У меня оказался уже установлен некий Microsoft Script Editor 10.0 (и MS Office 2003), но там все по-другому.
Но статья натолкнула на С:\Program Files\Common Files\Microsoft Shared\VS7Debug\VS7JIT.EXE, я это дело потыкал, оно ругнулось на
Visual Studio .NET у меня в принципе-то есть, но на эту систему я ее никогда не ставил.JIT Debugging
---------------------------
JIT Debugging is disabled.
To enable JIT Debugging, from Visual Studio .NET go to Tools/Options/Debugging/JIT Settings.
---------------------------
ОК
Я нагуглил HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings\JITDebug, выставил там 1.
Теперь из Script Editor можно прицепиться к процессу. Изначально тоже можно было, но безрезультатно. И потом надо выбрать Debug – Break All.
В общем, оно открывает работающий скрипт, можно выполнять его пошагово, но в момент падения ничего не происходит.
Падает где-то тут:
Code: Select all
statusbar.restore();
if(lpFrame2) {
Upd:
Падает вот тут:
Code: Select all
function Statusbar() {
...
this.get = function() {
return buffer(function(lpTextBuffer) {
AkelPad.SendMessage(hWndStatus, _TSTR ? 1037 /*SB_GETTEXTW*/ : 1026 /*SB_GETTEXTA*/, nParts - 1, lpTextBuffer); // <---
return AkelPad.MemRead(lpTextBuffer, _TSTR);
});
};
Однако, если закомментировать statusbar.restore();, то все равно иногда падает.
И падает уже на
Code: Select all
tileTabs(lpFrame, lpFrame2, tileHorizontal, useTabsOrder);
А с галочкой в самом плагине по-прежнему глухо, «Не удается инициализировать приложение для отладки».
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Infocatcher
У меня Office XP, но Script Editor также 10.0. Находится "c:\Program Files\Microsoft Office\Office10\MSE7.EXE". Я бы "HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings\JITDebug" вернул на 0 (по крайней мере у меня стоит 0). И надо включить через меню "Debug" в Script Editor'е "Web Debugging". Это насколько вижу и есть включение JIT, отладка в реальном времени.
У меня Office XP, но Script Editor также 10.0. Находится "c:\Program Files\Microsoft Office\Office10\MSE7.EXE". Я бы "HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings\JITDebug" вернул на 0 (по крайней мере у меня стоит 0). И надо включить через меню "Debug" в Script Editor'е "Web Debugging". Это насколько вижу и есть включение JIT, отладка в реальном времени.
Last edited by Instructor on Fri Apr 04, 2014 6:02 pm, edited 2 times in total.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Instructor
У меня вот такая версия.
Вернул в реестре как было – перестало работать вообще.
И в меню такого нет.
Плюс у меня IE9, там уже встроенный отладчик (и пунктов меню как в статье соответственно тоже нет).
У меня вот такая версия.
Вернул в реестре как было – перестало работать вообще.
И в меню такого нет.
Плюс у меня IE9, там уже встроенный отладчик (и пунктов меню как в статье соответственно тоже нет).
Last edited by Infocatcher on Fri Apr 04, 2014 6:03 pm, edited 2 times in total.
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
В общем, что-то ведь у меня заработало.
Но, я так понимаю, не видать значения переменных из текущей области видимости. Или и не должно? Странный тогда отладчик.
И в момент падения курсор просто остается на той строке, где произошло падение – никакой дополнительной информации не видно.
P.S. На всякий случай: в моем изначальном сообщении есть несколько дополнений.
Но, я так понимаю, не видать значения переменных из текущей области видимости. Или и не должно? Странный тогда отладчик.
И в момент падения курсор просто остается на той строке, где произошло падение – никакой дополнительной информации не видно.
P.S. На всякий случай: в моем изначальном сообщении есть несколько дополнений.
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
После всяких галко нажатий и "vs7jit.exe -RegServer" "vs7jit.exe -UnRegServer" у меня JITDebug стало 1
Можно еще проверить записи реестра (Office10 <-> Office11).
Возможно и это:
Должно. Debug -> Windows -> LocalsInfocatcher wrote:Но, я так понимаю, не видать значения переменных из текущей области видимости. Или и не должно?
Можно еще проверить записи реестра (Office10 <-> Office11).
Code: Select all
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{000C1217-0000-0000-C000-000000000046}\LocalServer32]
@="C:\\Program Files\\Microsoft Office\\Office10\\MSE7.EXE /JITDebug"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Machine Debug Manager\JITDebugging\Engines\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2}]
@="Script Only"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Machine Debug Manager\JITDebugging\Engines\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2}\{000C1217-0000-0000-C000-000000000046}]
@=""
"Remote"=dword:00000001
Code: Select all
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2}]
"Name"="Script"
"CLSID"="{56B4E602-21A1-11D2-8FD6-00C04FA30000}"
"AlwaysLoadLocal"=dword:00000001
"Attach"=dword:00000001
"ConditionalBP"=dword:00000001
"FunctionBP"=dword:00000001
"HitCountBP"=dword:00000001
"JITDebug"=dword:00000001
"PortSupplier"="{708C1ECA-FF48-11D2-904F-00C04FA302A1}"
"SetNextStatement"=dword:00000001
"SuspendThread"=dword:00000001
[HKEY_CLASSES_ROOT\CLSID\{56B4E602-21A1-11D2-8FD6-00C04FA30000}]
@="Script LE"
[HKEY_CLASSES_ROOT\CLSID\{56B4E602-21A1-11D2-8FD6-00C04FA30000}\InprocServer32]
@="C:\\Program Files\\Microsoft Office\\Office10\\VS Runtime\\scriptle2.dll"
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{56B4E602-21A1-11D2-8FD6-00C04FA30000}\ProgID]
@="ScriptDebugEngine.7"
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Ой, и правда. Пропустил как-то.Instructor wrote:Должно. Debug -> Windows -> Locals
Сейчас проверил еще раз – снова дошло до
Code: Select all
AkelPad.SendMessage(hWndStatus, _TSTR ? 1037 /*SB_GETTEXTW*/ : 1026 /*SB_GETTEXTA*/, nParts - 1, lpTextBuffer);
Подробностей я так и не вижу. В стеке вызовов – только анонимные js-функции, которые я и так пошагово прошел.lpTextBuffer 64674088 Number
И висит окошко
Если его закрыть, то AkelPad закроется и документ с кодом скрипта из отладчика пропадет.[Window Title]
AkelPad (x86) text editor
[Main Instruction]
Программа "AkelPad (x86) text editor" не работает
[Content]
Возникшая проблема привела к прекращению работы программы. Windows закроет эту программу, а если есть известный способ устранения проблемы, уведомит вас об этом.
[Закрыть программу]
По ключам есть вот такое:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{000C1227-0000-0000-C000-000000000046}\LocalServer32]
@="C:\\Program Files\\Microsoft Office\\OFFICE11\\MSE7.EXE /JITDebug"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Machine Debug Manager\JITDebugging\Engines\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2}]
@="Script Only"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Machine Debug Manager\JITDebugging\Engines\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2}\{000C1227-0000-0000-C000-000000000046}]
@=""
"Remote"=dword:00000001
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Кажется, все то же самое, только OFFICE11 в пути про InprocServer32.Instructor wrote:Возможно и это
Instructor wrote:Что, если сделать переменную lpTextBuffer глобальной?
Все равно периодически падает.
Причем, кажется, чаще падает после открытия новой вкладки, чем после выбора существующей.
Упало в том же месте, на
Code: Select all
AkelPad.SendMessage(hWndStatus, _TSTR ? 1037 /*SB_GETTEXTW*/ : 1026 /*SB_GETTEXTA*/, nParts - 1, lpTextBuffer);
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Уточню, что под глобальной подразумевалось - всю строку в начало скрипта
А "AkelPad.MemFree(lpTextBuffer);" на время тестов можно закомментировать.
Добавлено:
Еще попытка разобраться с JIT'ом. GUID используемые Scripts плагином:
Code: Select all
var oSys = AkelPad.SystemFunction();
var lpTextBuffer = AkelPad.MemAlloc(1024 * _TSIZE);
Добавлено:
Еще попытка разобраться с JIT'ом. GUID используемые Scripts плагином:
На WinXP x86:Scripts source wrote:#ifdef _WIN64
//{56B9FC1C-63A9-4CC1-AC21-087D69A17FAB}
DEFINE_GUID(IID_IProcessDebugManager, 0x56b9fc1c, 0x63a9, 0x4cc1, 0xac, 0x21, 0x08, 0x7d, 0x69, 0xa1, 0x7f, 0xab);
#else
//{51973C2f-CB0C-11d0-B5C9-00A0244A0E7A}
DEFINE_GUID(IID_IProcessDebugManager, 0x51973C2f, 0xCB0C, 0x11d0, 0xb5, 0xc9, 0x00, 0xa0, 0x24, 0x4a, 0x0e, 0x7a);
#endif
//{78A51822-51F4-11D0-8F20-00805F2CD064}
DEFINE_GUID(CLSID_ProcessDebugManager, 0x78a51822, 0x51f4, 0x11d0, 0x8f, 0x20, 0x0, 0x80, 0x5f, 0x2c, 0xd0, 0x64);
Code: Select all
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{78A51822-51F4-11D0-8F20-00805F2CD064}]
@="ProcessDebugManager Class"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{78A51822-51F4-11D0-8F20-00805F2CD064}\InprocServer32]
@="D:\\Program Files\\Common Files\\Microsoft Shared\\VS7Debug\\pdm.dll"
"ThreadingModel"="Both"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{78A51822-51F4-11D0-8F20-00805F2CD064}\ProgID]
@="ProcessDebugManager.7"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{78A51822-51F4-11D0-8F20-00805F2CD064}\VersionIndependentProgID]
@="ProcessDebugManger"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ProcessDebugManager.7\CLSID]
@="{78A51822-51F4-11D0-8F20-00805F2CD064}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ProcessDebugManager\CLSID]
@="{78A51822-51F4-11D0-8F20-00805F2CD064}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{51973C2F-CB0C-11D0-B5C9-00A0244A0E7A}]
@="IProcessDebugManager"
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
Все, кроме вот этогоНа WinXP x86:
Code: Select all
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{51973C2F-CB0C-11D0-B5C9-00A0244A0E7A}]
@="IProcessDebugManager"
Upd:
А поиск по «DebugManager» в «HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface» находит только .
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
И падает снова при отправке сообщения:Infocatcher wrote:Меня другое смущает:Я wrote:Однако, если закомментировать statusbar.restore();, то все равно иногда падает.
Code: Select all
var hWndMdi = AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 1 /*FI_WNDEDITPARENT*/, lpFrame);
Code: Select all
var test = AkelPad.SendMessage(hMainWnd, 1319 /*AKD_UNIQUEID*/, 0, 0);
Upd:
Хоть какая-то польза: исправил утечку памяти. Падать, впрочем, не перестало. Я даже на всякий случай проверил без
Code: Select all
CmdLineBegin=/Call("Scripts::Main", 1, "autoSaveSession.js", "-debug=false")