VS Code GD调试嵌入式Linux程序无法断点调试

2024-03-07 17:38

本文主要是介绍VS Code GD调试嵌入式Linux程序无法断点调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 问题
  • vscode的launch.json
  • 添加 -g
  • 修改优化等级 -O0

问题

使用gdb调试嵌入式Linux上的程序时,简单的c代码小程序,通过以下的方法可以正常的调试和运行

Linux嵌入式 gdb VSCode图形化调试教程

但是最近编写的程序比较复杂,代码量也比较多

在程序中打断点会发现没有反应,并且启动gdb之后断点符号是灰色的
在这里插入图片描述
板子上的程序也是直接运行,没有按照断点位置停下来

vscode的launch.json

首先是查看vscode这边的launch.json有没有配置正确

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "SK_Control(gdb)启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/SK_Control",                                                         // 用于选择被调试的可执行程序路径"args": [],"stopAtEntry": true,                                                                                // 若为true则启动调试后自动停在main开头"cwd": "${workspaceFolder}",                                                                        // 工作目录"debugStdLib":true,"miDebuggerPath":"/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb", // 修改过"miDebuggerServerAddress": "192.168.0.232:6000","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true,}],}]
}

核心就是

 "miDebuggerPath":"/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb", // 修改过"miDebuggerServerAddress": "192.168.0.232:6000",

可以先用一个小的历程来测试一下gdb服务有没有打通

添加 -g

基本的调试命令

用gcc命令来举例

步骤命令
预处理gcc -E hello.c -o hello.i
编译gcc -S hello.i -o hello.s
汇编gcc -c hello.s -o hello.o
链接gcc hello.o -o hello_elf

gcc命令详细:

选项含义
“-E”只进行预处理
“-S”(大写)只进行预处理和编译
“-c”(小写)只进行预处理、编译和汇编
“-o file”指定生成的输出文件名为file

在这里插入图片描述
这个时候需要的debug中常用的指令

-g

在交叉编译时加入-g

修改优化等级 -O0

断点添加不上,还有一个可能就是交叉编译器默认优化等级是 -O2

所以需要修改优化等级

OBJS 	=	main.o uart.o crc.o crc_cal.o para.o com_pc.o
EXE     =	SK_control
CFLAGS	= 	-lm  -lpthread  -fsigned-char 
EX		=   -g -O0$(EXE) : $(OBJS)$(CC) -o $(EXE) $(OBJS) $(CFLAGS)
main.o : main.c debug.h uart.h $(CC) -c main.c  $(EX)
uart.o : uart.c uart.h debug.h$(CC) -c uart.c  $(EX)
crc.o : crc.c crc.h  debug.h$(CC) -c crc.c  $(EX)
crc_cal.o : crc_cal.c crc_cal.h $(CC) -c crc_cal.c  $(EX)
para.o : para.c para.h debug.h$(CC) -c para.c  $(EX)
com_pc.o : com_pc.c com_pc.h  debug.h $(CC) -c com_pc.c  $(EX).PHONY : clean
clean :rm $(EXE) $(OBJS)

这篇关于VS Code GD调试嵌入式Linux程序无法断点调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784307

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用