QScriptEngineDebugger Class Reference

[QtScriptTools module]

该QScriptEngineDebugger类提供了一个QScriptEngine调试器。More…

继承QObject

Types

  • enum DebuggerAction { InterruptAction, ContinueAction, StepIntoAction, StepOverAction, ..., GoToLineAction }
  • enum DebuggerState { RunningState, SuspendedState }
  • enum DebuggerWidget { ConsoleWidget, StackWidget, ScriptsWidget, LocalsWidget, ..., ErrorLogWidget }

Methods

  • __init__ (self, QObject parent = None)
  • QAction action (self, DebuggerAction action)
  • attachTo (self, QScriptEngine engine)
  • bool autoShowStandardWindow (self)
  • QMenu createStandardMenu (self, QWidget parent = None)
  • QToolBar createStandardToolBar (self, QWidget parent = None)
  • detach (self)
  • setAutoShowStandardWindow (self, bool autoShow)
  • QMainWindow standardWindow (self)
  • DebuggerState state (self)
  • QWidget widget (self, DebuggerWidget widget)

Qt Signals

  • void evaluationResumed ()
  • void evaluationSuspended ()

Detailed Description

该QScriptEngineDebugger类提供了一个QScriptEngine调试器。

该QScriptEngineDebugger类提供了一个可以嵌入到使用Qt脚本Qt应用程序调试器。调试器允许应用程序用户能够检查脚本环境的状态和控制脚本的执行。

为了将调试器附加到一个脚本引擎,调用attachTo()函数。

  1. [QScriptEngine]($docs-qscriptengine.html) engine;
  2. QScriptEngineDebugger debugger;
  3. debugger.attachTo(&engine);

一旦调试器已附加到一个脚本引擎,你可以继续执行脚本像往常一样,例如:通过调用QScriptEngine.evaluate( ) 。当一个未捕获的异常发生时,调试器将被触发,或当debugger语句在脚本中遇到的问题。它也可以通过触发中断脚本评估在任意时间InterruptAction。例如,当脚本评估开始启动调试器,你触发动作开始之前,你evaluate()该脚本。

  1. debugger->action(QScriptEngineDebugger.InterruptAction)->trigger();
  2. engine->evaluate(contents, fileName);

默认情况下,standard debugger window如图评估时暂停。这可以通过调用被改变setAutoShowStandardWindow()函数。

调试器定义了一组actions可用,例如停止执行或打印变量的内容。它还提供了一组小部件(组件)的显示可以从调试器和触发器要求的操作的信息。可用的操作是由所识别的DebuggerAction枚举和小部件是由所识别的DebuggerWidget枚举。

访问各个调试窗口小部件是由提供widget()函数。这使得它可以安排在一个自定义的方式在窗口小部件。类似地,action( )函数提供了访问各种调试操作。

createStandardToolBar( )函数创建一个标准工具栏,以及createStandardMenu( )函数创建一个标准的菜单,如果要创建一个自定义的调试器配置这些功能可能是有用的。

evaluationSuspended()信号被发射时,调试器已经暂停脚本的评价和输入的交互模式下,即,在它接受来自用户的输入的方式。该evaluationResumed当脚本执行恢复( )信号被发射,即当执行控制权还回给脚本引擎。该state( )函数返回调试器的当前状态。

当调用QScriptEngine.evaluate( ),它通过一个描述性的脚本名称(文件名)作为第二个参数是非常有用的,因为这是将被调试器中显示的名称ScriptsWidget,如果一个名字不获通过,该脚本将被标记为“匿名” 。

当评估被暂停,调试器也将暂停脚本的事件循环。在下面的片段中,调用QScriptEngine.evaluate( )使得调试器被触发,该函数调用不会返回,直到用户完成与调试器进行交互。

  1. engine.evaluate("debugger");

当Qt的脚本调试器运行时,C + +应用程序本身并没有“冻结” 。这意味着,有可能是多个脚本进行评估,尽管调试器已暂停的评价current脚本的评价。例如,一个C + +计时器可能引发导致被调用的脚本函数,或者用户可能会在主应用程序用户界面的点击( )信号连接到一个脚本功能,点击一个按钮。这种嵌套的评价是允许的。调试器将进入交互模式为新的脚本,如果有异常抛出,或到达断点。需要注意的是,当遇到它不会停止debugger语句。

嵌套的评价需要一些思考决定调试器是如何呈现给用户时,例如,一个模态对话框是否适合,还是主应用程序用户界面的某些部分应在调试器运行时被禁用。

调试的内paintEvent( )目前不支持。如果你需要调试绘画相关的脚本代码,该代码应在C + +中的paintEvent (外部评价) ,如通过绘制一个图像,像Context2D和蚱QtScript例子做。这将使得代码安全进行调试。

调试器添加了一些特殊性能的脚本引擎:__FILE__保存在其中的当前评估产生的脚本的名称,并__LINE__保持当前的行号。这些做的print()风格的调试(该消息出现在调试器的调试输出窗口小部件)时是有用的。

Qt Script Debugger Manual介绍如何使用调试器。该Context2D example显示了如何将调试器集成在应用程序中。


Type Documentation

  1. QScriptEngineDebugger.DebuggerAction

这个枚举变量指定动作的action( )函数应该找回。检索到的动作可以被连接到任何槽,并连接到任何插件。请参阅Qt Script Debugger ManualConsole Command Reference这些动作的详细描述。

Constant Value Description
QScriptEngineDebugger.InterruptAction 0 只要下一个脚本语句达到暂停脚本的执行。
QScriptEngineDebugger.ContinueAction 1 给人的执行控制权交还给脚本引擎。
QScriptEngineDebugger.StepIntoAction 2 执行步骤操作。
QScriptEngineDebugger.StepOverAction 3 进行下一个动作。
QScriptEngineDebugger.StepOutAction 4 执行脚本,直到当前函数返回。
QScriptEngineDebugger.RunToCursorAction 5 继续执行到所选择的行(其中包含光标)在CodeWidget
QScriptEngineDebugger.RunToNewScriptAction 6 将控制返回给脚本引擎,直到一个新的脚本被执行。
QScriptEngineDebugger.ToggleBreakpointAction 7 切换断点在选定的线路CodeWidget
QScriptEngineDebugger.ClearDebugOutputAction 8 清除的内容DebugOutputWidget
QScriptEngineDebugger.ClearErrorLogAction 9 清除的内容ErrorLogWidget
QScriptEngineDebugger.ClearConsoleAction 10 清除的内容ConsoleWidget
QScriptEngineDebugger.FindInScriptAction 11 显示CodeFinderWidget
QScriptEngineDebugger.FindNextInScriptAction 12 查找下一个出现在CodeWidget
QScriptEngineDebugger.FindPreviousInScriptAction 13 查找以前发生在CodeWidget
QScriptEngineDebugger.GoToLineAction 14 显示“转至行”对话框。
  1. QScriptEngineDebugger.DebuggerState

这个枚举指定调试器的当前状态。

Constant Value Description
QScriptEngineDebugger.RunningState 0 在调试器运行。 (脚本的评价是允许的。 )
QScriptEngineDebugger.SuspendedState 1 该调试器已暂停脚本的评价。

这个枚举被引入或修改的Qt 4.6 。

  1. QScriptEngineDebugger.DebuggerWidget

这个枚举变量决定了小部件的widget( )函数应该找回。我们在详细对待这些小部件Qt Script Debugger Manual

Constant Value Description
QScriptEngineDebugger.ConsoleWidget 0 提供了一个命令行界面的调试器。
QScriptEngineDebugger.StackWidget 1 显示脚本的执行状态的回溯。
QScriptEngineDebugger.ScriptsWidget 2 显示当前加载的脚本列表。
QScriptEngineDebugger.LocalsWidget 3 显示当前堆栈帧的局部变量。
QScriptEngineDebugger.CodeWidget 4 显示当前脚本的代码。
QScriptEngineDebugger.CodeFinderWidget 5 提供可搜索在CodeWidget所示的脚本文本的小工具。
QScriptEngineDebugger.BreakpointsWidget 6 显示已设置的断点。
QScriptEngineDebugger.DebugOutputWidget 7 包含从输出print()脚本函数。
QScriptEngineDebugger.ErrorLogWidget 8 显示已生成的错误消息。

Method Documentation

  1. QScriptEngineDebugger.__init__ (self, QObject parent = None)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

构造一个新的QScriptEngineDebugger与给定对象parent

要附加QScriptEngine到调试器,使用attachTo()函数。

  1. QAction QScriptEngineDebugger.action (self, DebuggerAction action)

返回一个指向指定的action。可用的操作是由给定的DebuggerAction枚举。

有了这个功能,你可以添加动作,将自己的小部件,工具栏和菜单。这也是方便的,如果你,例如,希望香料的东西用自己的常规图标。下面的代码示例演示如何将动作添加到QToolBar

  1. [QAction]($docs-qaction.html) *continueAction = debugger->action([QScriptEngineDebugger]($docs-qscriptenginedebugger.html).ContinueAction);
  2. [QAction]($docs-qaction.html) *stepOverAction = debugger->action([QScriptEngineDebugger]($docs-qscriptenginedebugger.html).StepOverAction);
  3. [QAction]($docs-qaction.html) *stepIntoAction = debugger->action([QScriptEngineDebugger]($docs-qscriptenginedebugger.html).StepIntoAction);
  4. [QToolBar]($docs-qtoolbar.html) *toolBar = new [QToolBar]($docs-qtoolbar.html);
  5. toolBar->addAction(continueAction);

需要注意的是QScriptEngineDebugger已经添加了行动,其standard widgetsstandard window

See also widget( )createStandardMenu( )createStandardToolBar()和standardWindow( ) 。

  1. QScriptEngineDebugger.attachTo (self, QScriptEngine engine)

附加到给定的engine

调试器将安装一个自定义代理(使用QScriptEngine.setAgent())来监测发动机。虽然附加调试器,你不应该改变的代理,但是,如果你必须执行额外的监控,你必须设置一个代理程序,它会将所有事件到调试器的代理。

See also detach( ) 。

  1. bool QScriptEngineDebugger.autoShowStandardWindow (self)

返回是否评估时被挂起的标准调试器窗口会自动显示。

默认值为True 。

See also setAutoShowStandardWindow( ) 。

  1. QMenu QScriptEngineDebugger.createStandardMenu (self, QWidget parent = None)

[

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建具有给定一个标准的调试器菜单parent。返回新的菜单对象。

]($docs-qmenu.html)

See also createStandardToolBar( ) 。

  1. QToolBar QScriptEngineDebugger.createStandardToolBar (self, QWidget parent = None)

[

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

建立一个标准的调试器工具栏与给定parent。返回新的工具栏对象。

]($docs-qtoolbar.html)

See also createStandardMenu( ) 。

  1. QScriptEngineDebugger.detach (self)

分离从目前的脚本引擎,如果有的话。

See also attachTo( ) 。

  1. QScriptEngineDebugger.setAutoShowStandardWindow (self, bool autoShow)

设置是否在评估被暂停的标准调试器窗口会自动显示。如果autoShow为True,则窗口会自动显示,否则不会。

See also autoShowStandardWindow( ) 。

  1. QMainWindow QScriptEngineDebugger.standardWindow (self)

[

返回主窗口与调试器的组件的标准配置。

]($docs-qmainwindow.html)

See also createStandardMenu()和createStandardToolBar( ) 。

  1. DebuggerState QScriptEngineDebugger.state (self)

[

返回调试器的当前状态。

此功能被引入Qt的4.6 。

]($docs-qscriptenginedebugger.html#DebuggerState-enum)

See also evaluationResumed()和evaluationSuspended( ) 。

  1. QWidget QScriptEngineDebugger.widget (self, DebuggerWidget widget)

返回一个指向指定标准的实例widget。可用的窗口小部件是由定义DebuggerWidget枚举。

通过返回一个包含所有小部件的主窗口standardWindow( ) 。如果你不想使用这个窗口中,您可以获取各个部件使用此功能。例如,下面的代码示例显示了如何设置包含布局code windowstack widget

  1. [QWidget]($docs-qwidget.html) *codeWindow = debugger->widget([QScriptEngineDebugger]($docs-qscriptenginedebugger.html).CodeWidget);
  2. [QWidget]($docs-qwidget.html) *stackWidget = debugger->widget([QScriptEngineDebugger]($docs-qscriptenginedebugger.html).StackWidget);
  3. [QLayout](qlayout.html) *layout = new [QHBoxLayout](qhboxlayout.html);
  4. layout->addWidget(codeWindow);
  5. layout->addWidget(stackWidget);

请注意,您需要设置setAutoShowStandardWindow( )为False ;若否,标准的窗口将不分显示。

See also action( )standardWindow()和setAutoShowStandardWindow( ) 。


Qt Signal Documentation

  1. void evaluationResumed ()

这是该信号的默认超载。

当调试器已经恢复脚本的评价(如用户给予“继续”命令),这个信号被发射。

See also evaluationSuspended( ) 。

  1. void evaluationSuspended ()

这是该信号的默认超载。

这个信号被发射时,调试器已因任何原因而暂停脚本执行(例如由于未捕获到脚本异常,或由于断点被触发) 。

See also evaluationResumed( ) 。