C++开发调试工具:GDB调试,windebug调试,adb调试

我们在C++开发过程中时常避免不了要调试追踪,一下介绍最主流的三种调试工具:

一.GDB调试

1.coredump文件:
coredump文件是程序异常时系统产生的错误日志文件,即核心转储文件;
编译一个debug程序,必须是debug版本,否则无法产生coredump文件;
编译命令:g++ test.cpp -o mytest -g,必须要加上"-g"才能生成由debug info的文件;
执行程序直至崩溃,让其产生coredump文件;
2.GDB命令调试:
安装GDB命令:sudo apt-get install gdb下载,执行…/configure,执行make j4,执行sudo make install安装
GDB常用命令:run,break,continue,frame,list,next等
调用GDB命令:gdb mytest core.2222
查看调用堆栈命令:bt 来看到崩溃时执行的程序行
切入出问题的堆栈中命令:f 0(f加上堆栈编号)看以看到当时执行的程序代码行,确认出问题的点
查看对应的指针命令:p ptr(指针名称) 可以看到该指针为空等原因

二.windebug调试

安装windebug,控制面板 -> 程序 -> Windows Software Development Kit -> 右键选择更改 -> change -> 勾选Debugging Tools For Windows -> 安装;
为进程创建转储文件(dmp),既可以在任务有管理中选中进程 -> 右键 -> 创建转储文件;
运行要调试的程序;
打开windebug工具,菜单栏选择"file",“Attach to Process”;
选择要调试的目标程序;
附加;
附加后程序会被暂停,这时候需要使用Debug中go、step out、stepover等命令让程序继续执行,直到出现异常,Windbg会检测出异常,并停止;
windbg发现异常并中断,然后输入:.dump /f e:dump/XXXX.dmp,来生成全信息的dmp文件;

三.adb调试

1.介绍
adb全称Android Debug Bridge是C/S模式的桥接调试工具,可以上传/下载文件,运行设备shell命令,对设备安装和卸载应用等功能,主要用于andriod调试,也支持Linux嵌入式设备调试;
2.安装adb
adb支持Windows和Linux,在adb官网下载;Windows上解压后设置系统环境变量指向解压释放的目录;
3.连接使用
通过数据线连接开发板;
打开cmd命令窗口,即可使用adb命令调试设备;
4.常用命令
adb verison 显示adb版本;
adb help 帮助信息;
adb devices 查看当前已连接的设备列表;
adb root 获取root权限;
adb -s 222 shell 与设备号为222的设备建立连接;
exit 退出设备连接;
adb -p 6666 start-server 指定6666端口来启动设备adb服务;
adb shell pm list packages 列出当前设备中所有的包名;
adb install -r <文件路径\apk> 覆盖式安装apk包;
adb push C:\user\test /usr/local/ 将C盘下的test文件拷贝到设备的usr/local目录下;
adb shell getprop ro.product.model 获取设备型号;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/40541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 OpenCV 和 Python 进行车道检测和物体检测(YOLO)

本项目旨在开发一个集车道检测与物体检测功能于一体的智能视觉分析系统&#xff0c;利用先进的计算机视觉技术和深度学习模型&#xff0c;实现实时的道路场景理解和目标识别。系统主要依托OpenCV这一强大的计算机视觉库&#xff0c;以及Python作为编程语言&#xff0c;融合了车…

MySQL索引教程(01):创建索引

文章目录 MySQL 创建索引索引介绍MySQL CREATE INDEX 语法MySQL 索引类型MySQL CREATE INDEX 实例结论 MySQL 创建索引 对于一个具有大量数据行的表&#xff0c;如果你根据某个查询条件检索数据时很慢&#xff0c;可能是因为你没有在检索条件相关的列上创建索引。 索引类似于…

FPC生产工艺全流程详解

FPC生产制作繁琐而且难度较大&#xff0c;与普通PCB比较&#xff0c;FPC单位面积电路的造价高很多&#xff0c;但是&#xff0c;由于FPC优异的柔性、轻薄和可靠性等特性&#xff0c;给众多领域的设备和产品提供了更广泛的实现空间和新的设计方案&#xff0c;比如沉金板在电子、…

android的activty冷启动和热启动差异是什么?

Android的Activity冷启动和热启动之间存在显著差异&#xff0c;这些差异主要体现在启动过程、资源加载、组件初始化以及用户体验等方面。以下是对两者差异的详细分析&#xff1a; 一、定义与过程差异 冷启动&#xff1a; 定义&#xff1a;冷启动是指应用程序完全退出后&#…

Java需要英语基础吗?

Java编程语言本身并不要求必须有很强的英语基础&#xff0c;因为Java的语法和逻辑是独立于任何特定语言的。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&am…

android开发引入jar包

我在为一个安卓设备开发一个APP&#xff0c;设备的厂家给我提供了一个jar包&#xff0c;我应该如何把它引入到项目之中呢&#xff1f; 很惭愧我以前几乎没做过android的开发&#xff0c;在此之前这么一个简单的问题也不会。 实践 我随手在Android studio中新建了一个项目。 你…

Java项目:基于SSM框架实现的共享客栈管理系统分前后台【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的共享客栈管理系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

Splunk Enterprise for Windows 未授权任意文件读取漏洞复现(CVE-2024-36991)

0x01 产品简介 Splunk Enterprise是一款功能强大的数据分析引擎,旨在从所有IT系统和基础设施数据中提供数据搜索、报表和可视化展现。Splunk Enterprise能够收集、索引和利用所有应用程序、服务器和设备(包括物理、虚拟和云中环境)生成的快速移动型计算机数据。它允许用户从…

交易积累-比特币

在某些情况下&#xff0c;由于监管限制或个人选择&#xff0c;投资者可能会考虑购买与比特币相关的替代投资产品&#xff0c;如比特币矿业公司股票&#xff08;例如Marathon Digital Holdings, Inc.&#xff0c;股票代码&#xff1a;MARA&#xff09;或加密货币交易平台的股票&…

使用maven搭建一个SpingBoot项目

1.首先创建一个maven项目 注意选择合适的jdk版本 2.添加依赖 2.在pom.xml中至少添加依赖 spring-boot-starter-web 依赖&#xff0c;目的是引入Tomcat&#xff0c;以及SpringMVC等&#xff0c;使项目具有web功能。 <!-- 引入 包含tomcat&#xff0c;SpringMVC&#xff0c…

【C++题解】1561. 买木头

问题&#xff1a;1561. 买木头 类型&#xff1a;省赛、数组问题、二分答案、贪心、2015江苏省青少年信息学奥林匹克竞赛复赛 题目描述&#xff1a; 有 n 个木材供应商&#xff0c;每个供货商有长度相同一定数量的木头。长木头可以锯短&#xff0c;但短木头不能接长。有一个客…

web前端之上传文件夹、webkitdirectory

MENU 前言element-ui写法input写法 前言 1、以下代码只实现的单个文件夹的上传&#xff0c;原本需求是实现选择多个文件夹上传&#xff0c;但是没找到实现的方法。如果想实现多个文件夹上传&#xff0c;可以给这些文件夹新建一个父级文件夹&#xff0c;点击上传的时候选择父级文…

14-36 剑和诗人10 - 用LLM构建 AI 代理平台

介绍 在当今快速发展的技术环境中&#xff0c;大型语言模型 (LLM) 和 AI 代理正在改变我们与信息交互、实现流程自动化以及应对不同行业复杂挑战的方式。随着这些强大的模型不断发展&#xff0c;对能够无缝集成和协调它们的强大平台的需求变得越来越重要。 让我们深入研究设计…

android2024 gradle8 Processor和ksp两种编译时注解实现

android编译时注解&#xff0c;老生常谈&#xff0c;外面的例子都是bindView&#xff0c;脑壳看疼了&#xff0c;自己学习和编写下。 而且现在已经进化到kotlin2.0&#xff0c;google也逐渐放弃kapt&#xff0c;进入维护状态。所以要好好看看本贴。 参考我的工程&#xff1a; h…

数据结构之算法的时间复杂度

1.时间复杂度的定义 在计算机科学中&#xff0c;算法的时间复杂度是一个函数&#xff0c;它定量描述了算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比列&#xff0c;算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度 例1&#xff1a; 计算Func1…

Linux:ollama大模型部署

目录 Ollama 是一个能在本地机器上轻松构建和运行大型语言模型的轻量级、可扩展框架&#xff0c;适用于多种场景&#xff0c;具有易于使用、资源占用少、可扩展性强等特点。 1.安装下载ollama 2.为 Ollama 创建一个用户 3.为ollama创建服务文件 4.启动ollama服务 5.拉取语…

Java 家庭物联网

家庭物联网系统的代码和说明&#xff0c;包括用户认证、设备控制、数据监控、通知和警报、日志记录以及WebSocket实时更新功能。 ### 项目结构 plaintext home-iot-system ├── backend │ └── src │ └── main │ └── java │ └…

图书馆数据仓库

目录 1.数据仓库的数据来源为业务数据库&#xff08;mysql&#xff09; 初始化脚本 init_book_result.sql 2.通过sqoop将mysql中的业务数据导入到大数据平台&#xff08;hive&#xff09; 导入mysql数据到hive中 3.通过hive进行数据计算和数据分析 形成数据报表 4.再通过sq…

【matlab】智能优化算法——求解目标函数

智能优化算法在求解目标函数方面发挥着重要作用&#xff0c;它通过迭代、筛选等方法来寻找目标函数的最优值&#xff08;极值&#xff09;。以下是关于智能优化算法求解目标函数的详细介绍&#xff1a; 一、智能优化算法概述 智能优化算法是一种搜索算法&#xff0c;旨在通过…

设置单实例Apache HTTP服务器

配置仓库 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# vi rpm.repo仓库代码&#xff1a; [BaseOS] nameBaseOS baseurl/mnt/BaseOS enabled1 gpgcheck0[AppStream] nameAppStream baseurl/mnt/AppStream enabled1 gpgcheck0挂载 [rootlocalhost …