vs code调试.so文件

使用vs code调试.so文件

    • 1 vs code中安装c++的debug插件
    • 2 【重要】编写launch.json
    • 3 在.so的源码中打断点
    • 4 debug模式启动进程
    • 5 attach进程
    • 6 开始调试

.so是一种动态链接库,在大型项目以及跨语言项目中经常用到。在拿到.so文件对应的源码后进行debug呢?
简单原理:使用gdb或者lldb等debug工具attach到已经启动了的进程,即可开始调试。
由于gdb和lldb是命令行工具用起来不够方便,所以vs code基于gdb做了一层UI封装,底层还是使用了gdb,只是使用更加方便直观。

具体怎么操作呢?

1 vs code中安装c++的debug插件

这个不用多说,在vs code 的Extensions选项卡中选择自己习惯的debug插件安装即可。

2 【重要】编写launch.json

在.vscode路径下创建新文件launch.json,正确填写下面的字段

  • type改为 cppdbg
  • request改为 attach —— 表示附加到已有进程
  • program 改为启动程序的文件路径
  • MIMode改为gdb —— mac平台改为lldb,可以立即为mac版的gdb
{"version": "0.2.0","configurations": [{"name": "Attach to Process","type": "cppdbg","request": "attach","program": "${workspaceFolder}/Test.py",    // Note: 替换为启动程序的python脚本(或其他任何类型的可执行文件)"processId": "${command:pickProcess}","MIMode": "lldb",    // Note: 可选 gdb 或者 lldb"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

3 在.so的源码中打断点

就是在生成.so的c++源码中打断点,这里没什么区别,平时怎么打断点就怎么打。

4 debug模式启动进程

启动程序,以python为例,选中python脚本点击debug按钮
在这里插入图片描述
注意:由于attach过程需要花时间,为了避免vs code不够时间attach到进程,可以在程序执行到调用.so库之前打断点或者调用time.sleep()函数让线程休眠(我更倾向于打断点)。

5 attach进程

在第4步启动进程后,如果在python中打了断电,vs code左边栏会自动跳到debug选项卡,在这个页面下:

  • 点击运行Attach to Process
  • 选择对应的processId在这里插入图片描述

6 开始调试

第5步成功后,就可以开始debug了。
在这里插入图片描述

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

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

相关文章

区域和检索算法(leetcode第303题)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询:计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的 和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a;NumArray(int[] nums) 使用数组…

【NSX-T】7. 搭建NSX-T环境 —— 部署和配置 Edge Cluster

目录 7. 部署和配置 Edge Cluster7.1 配置 Edge 节点&#xff08;1&#xff09;Name and Description&#xff08;2&#xff09;Credentials&#xff08;3&#xff09;Configure Deployment&#xff08;4&#xff09;Configure Node Settings&#xff08;5&#xff09;Configur…

软件测试技术分享| Appium用例录制

下载及安装 下载地址&#xff1a; github.com/appium/appi… 下载对应系统的 Appium 版本&#xff0c;安装完成之后&#xff0c;点击 “Start Server”&#xff0c;就启动了 Appium Server。 在启动成功页面点击右上角的放大镜&#xff0c;进入到创建 Session 页面。配置好…

计算机组成原理——校验码

计算机组成原理学习笔记——校验码-CSDN博客 校验码——海明码及码距&#xff0c;码距_海明码的码距是多少-CSDN博客 1 下列关于码距与检错与纠错能力的描述中正确的是 &#xff08;ABC&#xff09; &#xff08;多选&#xff09; A. 码距为1的编码不具备任何检错能力 B. 码…

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心

2023 亚马逊云科技 re:lnvent 大会探秘: Amazon Connect 全渠道云联络中心 前言一. Amazon Connect 介绍 &#x1f5fa;️二. Amazon Connect 使用教程 &#x1f5fa;️1.我们打开URl链接找到对应服务2.输入Amazon Connect选中第一个点击进入即可&#xff1b;3.在进入之后我们就…

如何向领导汇报工作?一篇文章告诉你!

给领导汇报工作可以从两个方面考虑&#xff1a;一是工作汇报文件的制作&#xff1b;一是汇报方式。一份全面、清晰且准确的文件&#xff0c;加上一目了然的、科技满满的汇报方式&#xff0c;相比领导不满意都难&#xff5e;下面就让你全部get&#xff01; 一、工作汇报的文字内…

城市智能图书柜需求说明书

1. 简介 1.1 项目概括 本项目主要实现智能图书柜对图书的借出、还回、续借、查询、上下架、盘点的功能&#xff0c;对于读者&#xff0c;可以进行读者证的办理&#xff0c;读者信息的录入和完善。 1.2 项目背景 ​ 目前大量读者距离图书馆较远&#xff0c;无法方便、快捷地…

Motion Plan软硬约束下的轨迹生成

Motion Plan之轨迹生成代码实现Motion Plan之搜索算法笔记Motion Plan之基于采样的路径规划算法笔记Motion Plan之带动力学约束路径搜索 Motion Plan之轨迹生成笔记Motion Plan之曲线拟合笔记本项目代码&#xff1a;GitHub - liangwq/robot_motion_planing: 移动机器人轨迹生成…

Java开发工具积累(符合阿里巴巴手册规范)

文章目录 一、命名规约二、代码格式三、集合篇1. 栈、队列、双端队列2. List的升序倒序3. Map的升序降序4. 二维数组排序5. 集合之间的转换6. Map键值对遍历7. 重写equal与hashCode8. ArrayList的subList9. keySet&#xff08;&#xff09;/values&#xff08;&#xff09;/ent…

【md-editor-rt- Mrakdown编辑器使用】

1、安装 // 安装新版本的运行项目会报错&#xff0c;所以装个低版本的 yarn add md-editor-rt2.0.02、使用 import React, { useState } from react; import MdEditor, { ToolbarTips } from md-editor-rt; import md-editor-rt/lib/style.css;export default ({ }: any) >…

gitlab(gitlab-ce)下载,离线安装

目录 1.下载 2.安装 3.配置 4.启动 5.登录 参考&#xff1a; 1.下载 根据服务器操作系统版本&#xff0c;下载对应的RPM包。 gitlab官网&#xff1a; The DevSecOps Platform | GitLab rpm包官网下载地址: gitlab/gitlab-ce - Results in gitlab/gitlab-ce 国内镜像地…

JAVA主流日志框架梳理学习及使用

前言&#xff1a;目前市面上有挺多JAVA的日志框架&#xff0c;比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等&#xff0c;有人可能有疑问说还有slf4j&#xff0c;不过slf4j不是一种日志框架的具体实现&#xff0c;而是一种日志门面&#xff08;日志门面可以理解为是一种统…