【发布时间】:2020-03-26 08:37:07
【问题描述】:
(操作系统和版本:Ubuntu 18.4,VS Code 版本:Vscode 1.4,C/C++ 扩展版本:0.26)
您好,我已经阅读了所有关于“raise.c”的文章,但没有一篇能解决我的问题,我只是编写了一个简单的 OpenCV 代码来捕获网络摄像头的帧。每次我运行我的代码时,它经常显示一个错误。错误信息是:
无法打开“raise.c”:无法读取文件(错误:找不到文件 (/build/glibc-OTsEL5/glibc-2.27/sysdeps/unix/sysv/linux/raise.c))。
launch.json 是:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
task.json 是:
{
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config",
"--libs",
"--cflags",
"opencv4`"
],
"options": {
"cwd": "/usr/bin"
}
}
],
"version": "2.0.0"
}
那么我该如何解决这个问题呢?有什么办法可以解决。我是初级程序员。
第二个问题是每次我运行此代码时,我的网络摄像头都会冻结,我必须使用“强制相当”底部。为什么我的网络摄像头死机了?欢迎任何想法。谢谢。 (我使用的是 ubuntu,我的 IDE 是 Vscode)
【问题讨论】:
-
这是 VS 代码抱怨您没有 C 库的源代码。在大多数情况下,它是不需要的 - 您应该在堆栈中查找调用
raise.c的代码 - 它通常是引发问题的异常。至于另一个问题 - 没有代码,不知道。 -
我没有使用 raise.c 库的任何部分。我可以排除这条路吗?以及如何?
-
您不需要排除路径 - 您需要查看调试器中的堆栈跟踪。它会告诉你你的代码在哪里触发了这个异常。不要执着于你没有这个文件的事实,这是你程序中某些东西的副作用导致它到达那个点。查看堆栈跟踪 - 它会指向直接的罪魁祸首。
-
@petesh 你能解释更多吗?什么是堆栈跟踪?
-
调试时 Visual Studio 代码窗口的左侧有三个项目:
variables、watch和call stack- 当您检查调用堆栈时,它应该指出程序中的哪个位置出现问题。它可能从libc.so.6!__GI_raise(int sig)开始,如果您向下查看列表,您会看到您的代码,您应该可以点击它。
标签: c++ opencv ubuntu video-processing vscode-debugger