0

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

  • 如何查看堆栈跟踪?

  • 如何在帧之间移动?

4

2 回答 2

1

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

旧答案

我不知道显示调用堆栈的方法。进入调试模式后,我使用dbstep()dbnext()分别进入和越过下一行,并编写调用。dbwhere()此外,您可以使用和看到附近的代码行dbtype()。这绝对是 MATLAB 领先于 Octave 的一个领域。

于 2010-03-16T20:48:32.277 回答
1

直到今天,octave GUI(至少 5.2.0)仍然没有显示调用堆栈。不过,您可以在 VS 代码中运行 octave 调试器,并在那里查看堆栈跟踪。我已经使用它并且效果很好。目前实际上有两个可用于 VS 代码的 octave 调试器插件。我发现 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 插件,我认为也有一些机制使 octave-cli 并不总是关闭。如果您尝试在 VS 代码中启动调试器但没有任何反应,请检查进程并在必要时终止。

于 2021-02-22T14:25:52.810 回答