Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Определение позиции источника скрипта в JScript для отслеживания вызовов методов

Delphi , Технологии , ActiveX

Вопрос, поднятый пользователем, касается возможности определения текущей позиции исполнения скрипта в JScript, когда вызываются методы объектов, экспонируемых скриптовому хосту. Это может быть необходимо для отладки и трассировки вызовов методов, а также для получения информации о месте вызова, аналогичной той, что доступна при обработке ошибок скрипта в веб-сайтах.

Проблема

Пользователь столкнулся с необходимостью отслеживания вызовов методов своих объектов из JScript. Ему требуется определить, в каком месте скрипта был сделан вызов, чтобы получить информацию о номере строки, символе и cookie, который был передан в ParseScriptText. Необходимо это сделать без генерации ошибок.

Контекст

В контексте рассматривается реализация IActiveScriptSite, IActiveScriptSiteDebug и IActiveScriptSiteInterruptPoll в собственном скриптовом хосте. Пользователь использует только JScript-движок в качестве внешнего COM-объекта, что важно для решения задачи.

Альтернативный ответ и комментарии

Пользователь рассмотрел возможность добавления отладочных утилит в свой скриптовый хост, но столкнулся с проблемой, что для этого требуется COM-объект "process debug manager", который существует только при установке Visual Studio или MS Script Debugger. Он также упомянул, что нашел код, который может дать полный стек вызовов без номеров строк, но это не решает его задачу полностью.

Подтвержденный ответ

Для решения поставленной задачи можно использовать следующий подход:

  1. Реализация интерфейса IActiveScriptSiteDebug позволит вам получать информацию о стеке вызовов. Этот интерфейс включает метод GetScriptDebugGeometry, который может быть использован для получения геометрии отладочной информации, включая позицию источника скрипта.

  2. Метод GetScriptCallInfo интерфейса IActiveScriptSiteDebug позволяет получить информацию о текущем вызове скрипта, включая информацию о номере строки и символе.

  3. В вашем скриптовом хосте необходимо реализовать обработку этих методов для получения необходимых данных.

Вот примерный код на Object Pascal (Delphi), который может быть использован в качестве основы для реализации IActiveScriptSiteDebug:

type
  TScriptDebugSite = class(TInterfacedObject, IActiveScriptSiteDebug)
  public
    function GetScriptDebugGeometry(hWnd, pBCEE, dwRIID, ppRIIntf) : HRESULT; stdcall;
    function GetScriptCallInfo(pBCE, dwCallInfoFlags, ppCallInfo) : HRESULT; stdcall;
    // другие методы интерфейса IActiveScriptSiteDebug
  end;

function TScriptDebugSite.GetScriptDebugGeometry(hWnd: THandle; pBCEE: IUnknown; dwRIID: DWORD; ppRIIntf: Punt32): HRESULT; stdcall;
begin
  // реализация метода GetScriptDebugGeometry
end;

function TScriptDebugSite.GetScriptCallInfo(pBCE: IUnknown; dwCallInfoFlags: DWORD; ppCallInfo: Punt32): HRESULT; stdcall;
begin
  // реализация метода GetScriptCallInfo для получения информации о вызове
  // например, использование pCallInfo.pbstrSourceLine для получения строки источника
end;

Обратите внимание, что для полной реализации необходимо обработать все методы интерфейса IActiveScriptSiteDebug и работать с COM-объектами, что требует глубоких знаний в области COM-программирования и работы с JScript-движком.

Заключение

Таким образом, для определения позиции источника скрипта в JScript и отслеживания вызовов методов необходимо реализовать интерфейс IActiveScriptSiteDebug и использовать его методы для получения необходимой информации. Это позволит вам получить более детальную информацию о месте вызова без необходимости генерации ошибок.

Создано по материалам из источника по ссылке.

Пользователь хочет реализовать отслеживание вызовов методов в JScript для получения информации о позиции исполнения скрипта, включая номер строки и символ, без использования генерации ошибок.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: ActiveX ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:07:44/0.001788854598999/0