vscodegdb(vscodegdb调试找不到文件)
本篇文章给大家谈谈vscodegdb,以及vscodegdb调试找不到文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、VSCode 调试
- 2、vscode烧录c++后无反应
- 3、VsCode 执行 debug(lldb/gdb) 命令
- 4、vscode运行一直显示语法建立gdb连接是怎么回事
- 5、vscode + gdb 远程调试 linux 内核源码(附视频)
- 6、vsc如何实现单步仿真功能
VSCode 调试
更全面的信息可以参考官方 调试手册 ,以下记录我用 VSCode 调试的一些经验。
想要在 VSCode 里调试,需要配置两个文件 tasks.json 和 launch.json 。
这两个桐困游文件按 F5 后会自动在 .vscode 目录下生成。
一般默认生成的 tasks.json 文件如下:
我们需要关注的选项有:
深入理解 tasks.json 文件的作用与 "command" 选项的用法,我们就能灵活地配置构建工程。
tasks.json 文件是用来构建工程的,当我们按 F5 进行调试时,VSCode 首先会执行 tasks.json 文件里 "command" 选项后的命尺基令,并传入 "args" 参数,这样整个工程就被重新编译链接一遍了。
以 hello.c 文件和上述 tasks.json 为例,按 F5 进行调试时,最终会在命令行执行下述命令构建工程:
当然,如果一个工程有多个文件,"command" 就不能是简单的 gcc 了,需要根据实际的构建系统选择。
如果构建系统使用的是 Makefile ,那我们可以配置
这样在构建项目时就会使用命令
这跟我们平时使用 make 构建项目是一致的。
又比如配置 Zephyr 环境,
这样在构建项目时相当于执行命令
launch.json 文件用于配置调试环境。一般默认生成的文件如下:
我们需要关注的选项有:
VSCode 预定义了一些变量,可以在 Variables Reference 查看意思。
有时候我们的程序需要访问硬件资源,这一般需要 root 权限,而 VSCode 一般是在用户权限下启动的,这就需要特殊配置 VSCode 才能调试程序。
下面介绍如何利用 VSCode 以 root 权限调试程序。
首先需要注意到 launch.json 文件里的 "miDebuggerPath" 这个选项,它是调试器的路径,如果这个调试器可以以 root 权限运行,那么就达局销成了我们的目的了。
在 /home/user_name 目录下创建文件 gdb,user_name 需要替换为实际的用户名。
然后编辑该文件 vim gdb ,加入下述内容:
给 gdb 添加执行权限,
在修改 "miDebuggerPath" 成为
即可。这样我们就可以在 VSCode 里以 root 权限调试程序了,只不过每次都需要输入密码,因为有一个 sudo 过程。
为了解决这个麻烦,我又在网上找到了方法,将 /home/user_name/gdb 加入 sudo 的免密认证即可。
输入
编辑 /etc/sudoers 文件,修改成下述内容即可,
其中 jackis 是我的用户名,需要根据实际用户名替换。
NOPASSWD: 后的命令 sudo 时都不需要密码。退出 Shell,再重新打开一个命令行界面,输入 sudo apt update ,会发现没有提示输入密码了。
参考:
How to debug programs with “sudo” in VSCODE
How to Run sudo Commands Without Password
[img]vscode烧录c++后无反应
以以下代码为例,具体问题就是每次修改代码之后运行发现都没有生效,比如第一次编译运行打印了“Hello”,我在添加新语句后运行程序发现修改并未生效带首,网上找解决方法大多是下面这种:
点击左下角设置标志图 - 设置,出来了设置相关的东西,搜索 files.autoSave 第一种:把"files.autoSave":“off” 修改成 “files.autoSave”:"onFocusChange
#includeiostream
using namespace std;
int main(){
cout"Hello"endl;
}
1
2
3
4
5
1
2
3
4
5
我尝试这种方法并未起作用,最后经过查看官方文档等等对比C++环境的配置发现是在配置launch.json文件时点击add configuration时添加的配置少了下面句语句,蠢凯数在添加以后就成功了。
这里解释一下launch.json 文件的作用,launch.json文件是Vscode关于代码调试的配置文件,在这里面配置了gdb.exe调试孙缓程序的运行,下面是官方文档的一些信息:
VsCode 执行 debug(lldb/gdb) 命令
在使用其它 IDE 调试的时候,有时候仅仅使用 IDE 提供的调试按钮不能满足我神激尘们的需求,这时候我们会直接在游禅 IDE 提供的 Console 中输入 LLDB/GDB 指令,铅闷进行细粒度的控制。但是在使用 VsCode 开发 的时候,这个入口很难找到。分享给小伙伴们 : )
不像其他 IDE 可以直接输入 LLDB/GDB 指令,VsCode 需要使用 -exec 作为前缀来执行调试命令。例如想要打印变量 v ,输入 -exec p v 就可以执行 LLDB/GDB 的 p v 指令了。
vscode运行一直显示语法建立gdb连接是怎么回事
运行失败。vscode运行调试时袭蚂代码拍贺埋路径中存在中文名,导致出现显示语法建立gdb连接这样的问题。可以通过修改代码路径的中文名为英文路径拍举解决。
vscode + gdb 远程调试 linux 内核源码(附视频)
配套视频: vscode + gdb 远程调试 linux (EPOLL) 内核源码 。
前段时间才搭建起来 gdb 调试 Linux 内态烂宏核网络源码历链 ( 视频 ),但是 gdb 命令调试效率不高。帆册磨刀不误砍柴工,所以折腾一下 vscode ,使调试人性化一点。
要搭建 vscode + gdb 调试 Linux 内核环境,首选要搭建: gdb 调试 Linux 内核源码 ( 视频 ) ,然后再配置 vscode 进行测试调试。
vsc如何实现单步仿真功能
这里对vscode配置一般情况的cpp调试做个记录:
1、整体思路就是首先按照常规方法进行mkdir build cd build cmake.. make (这一步可以在空孝盯vscode的终端完成,也可以在系统终端完成,无所谓。但是为了少开点界面就在vscode里面完成比慎中较好)生成可执行文件,然后使用vscode进行单步。
2、配置launch文件:点击左侧边栏的Debug图标(Ctrl+Shift+D),再点上方的齿轮图标configure,点击default configure就能自动生成launch.json文件。进入launch文件界面可以看到路径为.vscode/launch.json/Launch Targets/(gbd)Launch.
3、修改launch文件
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/app/testMonoBA", //此路径更改为最终生成的可执行文件路径以及可执行文件名称
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment"斗和: [],
"externalConsole":false,//将此处的true改为false,不然他会调用系统的终端进行现实
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
}
]
}
4、修改CMakeLists.txt文件
cmake_minimum_required(VERSION 2.8)
project(slam_demo)
set(DEFAULT_BUILD_TYPE "Debug") #修改处,讲release改为debug,也可以直接删除
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.")
set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif ()
set(CMAKE_CXX_FLAGS "-std=c++11")
FIND_PACKAGE( OpenMP REQUIRED)
if(OPENMP_FOUND)
message("OPENMP FOUND")
ADD_DEFINITIONS(-DUSE_OPENMP)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()
#set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -Wno-reorder" CACHE STRING "" FORCE)
#set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -Wno-reorder -O2" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "{CMAKE_CXX_FLAGS} -o0 -ggbd") #添加语句
add_compile_options(-g) #添加语句
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
option(BUILD_APPS "Build APPs for slam course" YES)
option(BUILD_TESTS "Build test for slam course" No)
# third party libs
# eigen
find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIR})
# opencv
find_package(OpenCV 4 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# glog
find_package(Glog REQUIRED)
include_directories(${GLOG_INCLUDE_DIRS})
# sophus
include_directories(${PROJECT_SOURCE_DIR}/thirdparty/Sophus)
include_directories(${PROJECT_SOURCE_DIR})
add_subdirectory(frontend)
add_subdirectory(backend)
add_subdirectory(utils)
if (BUILD_APPS)
add_subdirectory(app)
endif ()
if (BUILD_TESTS)
enable_testing()
add_subdirectory(test)
endif ()
完成以上步骤后,重新进行编译,然后vscode中的调试一栏下面的就不再是灰色,可以进行单步调试。
关于vscodegdb和vscodegdb调试找不到文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。