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

时间:2010-03-16 20:19:22

标签: debugging stack-trace callstack octave

我在Octave的某些内部库函数中出现故障。我想调试调用函数,但我不知道该怎么做。

  • 如何查看堆栈跟踪?

  • 如何在帧之间移动?

2 个答案:

答案 0 :(得分:1)

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

旧回答

我不知道如何显示callstack。一旦我处于调试模式,我使用dbstep() and dbnext()分别进入下一行,然后编写调用。此外,您还可以使用dbwhere()dbtype()查看附近的代码行。这绝对是MATLAB领先于Octave的一个领域。

答案 1 :(得分:1)

直到今天,octave GUI(至少 5.2.0)仍然没有显示调用堆栈。不过,您可以在 VS 代码中运行 Octave 调试器,并在那里查看堆栈跟踪。我用过它,效果很好。目前实际上有两个 Octave 调试器插件可用于 VS 代码。我发现 Silva 的工作稍好一些,另一个似乎并没有总是关闭调试器进程。在launch.json中使用类似的东西:

    "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 插件,我认为存在某种机制使八度音程 cli 并不总是关闭。如果您尝试在 VS 代码中启动调试器但没有任何反应,请检查进程并在必要时终止。