我在 Octave 的某些内部库函数中出现故障。我想调试调用函数,但我不知道该怎么做。
如何查看堆栈跟踪?
如何在帧之间移动?
我在 Octave 的某些内部库函数中出现故障。我想调试调用函数,但我不知道该怎么做。
如何查看堆栈跟踪?
如何在帧之间移动?
编辑- dbup()
、dbdown()
和dbstack()
在 Octave 3.2 及更高版本中可用。http://www.gnu.org/software/octave/doc/interpreter/Debugging.html#Debugging
旧答案
我不知道显示调用堆栈的方法。进入调试模式后,我使用dbstep()
和dbnext()
分别进入和越过下一行,并编写调用。dbwhere()
此外,您可以使用和看到附近的代码行dbtype()
。这绝对是 MATLAB 领先于 Octave 的一个领域。
直到今天,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 代码中启动调试器但没有任何反应,请检查进程并在必要时终止。