debugging 如何在Octave的调试模式下查看堆栈跟踪

s71maibg  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(195)

我在Octave中的某个内部库函数中有一个错误。我想调试调用函数,但我不知道如何做。

  • 如何查看堆栈跟踪?
  • 如何在帧之间移动?
mi7gmzs6

mi7gmzs61#

编辑-dbup() , dbdown() , and dbstack()在Octave 3.2及更高版本中可用。http://www.gnu.org/software/octave/doc/interpreter/Debugging.html#Debugging

"老答案"
我不知道如何显示调用堆栈。一旦我进入调试模式,我使用dbstep()dbnext()分别进入和跳过下一行,并编写调用。另外,你可以看到附近的代码行使用dbwhere()dbtype()。这绝对是MATLAB领先于Octave的一个方面。

vhmi4jdf

vhmi4jdf2#

直到今天,八度音程GUI(至少5.2.0)仍然没有显示调用堆栈。不过你可以在VS代码中运行octave调试器,并在那里看到堆栈跟踪。我用过它,它工作得很好。目前实际上有两个octave调试器插件可用于VS代码。我发现Silva的工作得稍微好一点,另一个似乎并不总是关闭调试器进程。

"version": "0.2.0",
    "configurations": [
        {
            "type": "OctaveDebugger",
            "request": "launch",
            "name": "octave debug",
            "octave": "octave-cli",
            "sourceFolder": "${workspaceFolder}:/home/username/src/octave",
            "workingDirectory": "${workspaceFolder}",
            "program": "yourprogram('stringarg')"
        }
    ]

也就是说octave cli调试器的可执行文件也应该在unix路径上。即使有Silva插件,我认为也有一些机制使octave-cli不总是关闭。如果你试图在VS代码中启动调试器,但没有任何React,请检查进程并在必要时杀死。

inn6fuwd

inn6fuwd3#

我知道这是一个老问题,但为了防止其他人问到这个问题,我添加了答案。dbstack打印当前堆栈信息dbup在堆栈中向上一步dbdown在堆栈中向下一步返回

相关问题