gdbserver 远程调试问题:设置文件和so搜索路径

Vscode远程cmake项目gdb调试 在项目的c文件中添加断点 保存所有文件,并将界面切换到主函数所在界面(重要步骤,否则不生成task.json) 点击VS Code界面的小虫子图标 点击“创建 launch.json",选择编译所使用的编译器,之后会出现警告弹窗,直接将其关闭,VS Code自动生成launch.json和task.json 将下列代码复制到task.json中替换源代码 { "version": "2.0.0", "options": { "cwd":... 阅读详情

编写一个必然crash 的程序

#include <stdio.h>

void crash(){
 
    char *a=0;
    *a=0;
}
int main()
 {
        printf("hello world\n");
        crash();
        printf("after crash\n");
 }
执行gdb 远程调试

gdbserver :1234 a.out 


运行 gdb , 运行命令  target remote :1234

必须用 file 指定可执行文件,才能看见调用函数

(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400534 in ?? ()
(gdb) bt
#0  0x0000000000400534 in ?? ()
#1  0x00007fffffffe4c0 in ?? ()
#2  0x000000000040054c in ?? ()
#3  0x0000000000000000 in ?? ()
(gdb) file /home/payne/hello/a.out
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from /home/payne/hello/a.out...done.
(gdb) bt
#0  0x0000000000400534 in fun1 () at hello.cpp:6
#1  0x000000000040054c in main () at hello.cpp:12

不用 -g 编译也能看见函数,但不能定位到行

Program received signal SIGSEGV, Segmentation fault.
0x0000000000400534 in crash() ()
(gdb) bt
#0  0x0000000000400534 in crash() ()
#1  0x000000000040054c in main ()

把 crash 放到 so 中会如何?

生成libcrash.so 重新编译 hello.cpp

g++ -o libcrash.so -shared crash.cpp 

export LD_LIBRARY_PATH=`pwd`

g++  hello.cpp  -lcrash


gdb 不能定位到 so 中的函数

rogram received signal SIGSEGV, Segmentation fault.
0x00007ffff7ff65bc in ?? ()
(gdb) bt
#0  0x00007ffff7ff65bc in ?? ()
#1  0x00007fffffffe470 in ?? ()
#2  0x0000000000400657 in ?? ()
#3  0x0000000000000000 in ?? ()
(gdb) file /home/payne/hello/a.out
A program is being debugged already.
Are you sure you want to change the file? (y or n) 
Please answer y or n.
A program is being debugged already.
Are you sure you want to change the file? (y or n) y
Reading symbols from /home/payne/hello/a.out...(no debugging symbols found)...done.
(gdb) bty
Undefined command: "bty".  Try "help".
(gdb) bt
#0  0x00007ffff7ff65bc in ?? ()
#1  0x00007fffffffe470 in ?? ()
#2  0x0000000000400657 in main ()

用 set solib-search-path 指定路径, 可以得到 so 中的位置

(gdb) set solib-search-path /home/payne/hello
Reading symbols from /home/payne/hello/libcrash.so...(no debugging symbols found)...done.
Loaded symbols for /home/payne/hello/libcrash.so
Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...Reading symbols from /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.15.so...done.
done.
Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.15.so...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
(gdb) bt
#0  0x00007ffff7ff65bc in crash() () from /home/payne/hello/libcrash.so
#1  0x0000000000400657 in main ()



Xilinx实战-深入AXI UART Lite IP核的配置与调试 本文详细介绍了Xilinx FPGA中AXI UART Lite IP核的配置与调试方法,包括Vivado环境下的IP核设置、关键参数优化、寄存器操作及常见问题排查。通过实战案例和代码示例,帮助开发者快速掌握AXI接口的串口通信技术,提升嵌入式系统开发效率。 阅读详情

相关推荐

【WRF-CMAQ实战指南】从环境配置到测试案例运行全解析

本文详细解析了WRF-CMAQ从环境配置到测试案例运行的全过程,包括系统环境检查、依赖库安装、源码获取与项目初始化、关键配置技巧、编译实战与排错、测试案例运行验证等关键步骤。通过实战指南,帮助用户快速掌握WRF-CMAQ的安装和运行技巧,提升空气质量模拟的效率。

year5的博客 244

gdb+gdbserver远程调试环境搭建及调试_gdb server(1)

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!存中…(img-5BJUqGQm-1712245343464)]既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化![外链图片转存中…(img-184VLP6b-1712245343464)][外链图片转存中…(img-6Lo9xIv0-1712245343465)]

keyoukewude的博客 2980

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 266

Android-gdb远程调试so文件

https://www.jianshu.com/p/d532d196c89f

pyxllq的博客 962

TekTronix 高速信号完整性基础以及测试方法分析

如果信号速率比较高,则CTLE与FFE都无法满足要求,尤其是大于10G,比如USB3.1Gen2 10Gbps,PCIe4.0 16Gbps,这些场合都会采用DFE均衡,DFE的优点是,它既可以识别当前比特,并且可以判决前面的n个比特(Tap的阶数越高,看到的前面的比特数越多),根据前面比特的变化来计算出要处理当前比特所要变化的幅度,来补偿由于前面比特变化所引起的信号幅度的变化。10G以下,一般都不太关心这个串扰,高于10G的信号,会发现相互之间的串扰越来越明显,已经成为引起误码的重要的原因之一。

weixin_45365488的博客 4141

【网络】Ikuai中如何添加/更换虚拟机(图文)

Ikuai 添加虚拟机教程

qq_20623849的博客 6533

vscode gdbserer远程调试arm-linux-gdb libncurses.so.6: cannot open shared object file

在~/.bashrc里面添加该动态库路径还是提示找不到libncurses.so.6,我初步猜测原因是vscode启动调试时没有启动/etc/profile导致没有执行 ~/.bashrc,所有设置的动态库路径没有效果 在代码里面添加一个脚本,看看vscode远程调试时的一些环境变量,然后设置修改这些环境变量,满足arm-linux-gdb启动的条件 在launch.json 里面配置gdb为编写的脚本 “miDebuggerPath”:"${workspaceFolder}/gdb.sh" ...

A_wangc的博客 1730

从FSI到三层堆叠:一文搞懂车载CIS图像传感器技术演进与选型避坑

本文深入解析车载CIS图像传感器从FSI到三层堆叠的技术演进,揭示不同结构在低光性能、HDR表现和温度稳定性上的关键差异。通过实测数据对比,指导智能驾驶系统选型策略,帮助开发者规避成本与性能的常见陷阱,提升车载摄像头在复杂环境下的成像质量。

weixin_30689307的博客 99

使用gdbserver远程调试

1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1 下载地址:http://ftp.gnu.org/gnu/gdb/ 注:若已有gdbserver,可以直接跳到步骤4   2.编译gdbserver 编译GDB源码时只需要编译出gdbserver就可以了,交叉编译器自带arm-linux-gdb(cli

千重浪Linux技术工作室 877

CAN(2)-GD32

GD32中CAN的特征。

小柚子的博客 552

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

OpenWrt下使用gdbserver调试

一、简介 在开发linux过程中,当程序代码特别多的时候,很容易就会出现Segmentation fault,这个时候就很让人摸不到头脑,靠打印有时候也找不到,这个时候就可以用gdb试试。 gdb调试有两种方式,一种是远程调试,通过gdbserver远程进行调试,另一种是直接在板子上调试。 通过make menuconfig配置编译后,加了gdb调试的在原来基础上多了1.25M。而gdbserver只有96K,对于FLASH总共才只有8M的路由器来说十分合适。 二、安装gdbserver 输.

xiaohu1996的博客 1610

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

嵌入式调试中gdb+gdbserver 调试环境搭建

1.  gdb + gdbserver交叉编译    下载GDB源码:    http://ftp.gnu.org/gnu/gdb/ 这里选择gdb-7.9.1.tar.gz tar -zxvf gdb-7.9.1.tar.gz  gdb 安装: cd gdb-7.9.1 ./configure --target=arm-ambarella-linux-uclibcgnueabihf

ostc184的专栏 4467

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Qt Creator远程调试i.MX6板卡:gdbserver部署与断点实战

嵌入式Linux应用开发中,串口打印调试效率低且易改变程序时序,面对崩溃类问题往往定位困难。GDB远程调试技术通过客户端与目标板上的gdbserver代理协作,实现了断点、单步执行、变量监视与栈回溯的完整能力,让开发者获得接近本地IDE的调试体验。在i.MX6这类ARM开发板上,借助交叉编译工具链编译并部署gdbserver,再通过Qt Creator配置设备、工具链与调试器,即可构建一套高效的远程调试环境。该方案适用于信号槽异常、空指针崩溃、共享库符号解析等常见问题排查,也能利用条件断点与观察点处理难以稳

weixin_33895657的博客 327

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

gdb+gdbserver远程调试技术

首先声明,原创只是jiand

styyzxjq2009的专栏 9330

Android native 静态库 gdb调试 gdbserver

最近开发一个Android native 的so和可执行文件; 关于再gdbserver 调试的记录 1. push ndk的gdbserver 我使用的是ndk-14 不够这个包里面已经没有gdbserver 了 。。。 所以我找到ndk-10 版本的有gdbserver路径: ndk-r10/android-ndk-r10d/prebuilt/android-arm/gdbse...

5266的博客 690

gdbserver 使用

使用gdbserver远程调试 来源: ChinaUnix博客  日期: 2008.06.22 13:48 (共有条评论) 我要评论   使用gdbserver远程调试 1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1 下载地址:

u011535016的专栏 901

GDB远程调试实战:从原理到ARM嵌入式环境搭建

在软件开发和系统调试中,调试器是定位和修复程序问题的核心工具。其工作原理是通过控制程序执行流程、检查内存状态和变量值来诊断异常。对于无法在本地直接运行代码的场景,如嵌入式系统、远程服务器或分布式环境,远程调试技术提供了关键价值。它允许开发者在本地工作站使用功能完整的调试器,通过网络或串口连接,实时调试运行在远端设备上的程序。这项技术广泛应用于物联网设备固件开发、线上服务器性能诊断和跨架构硬件验证等场景。GDB远程调试通过客户端-服务器模型实现,其中轻量级的gdbserver作为调试代理运行在目标端,而带符号

weixin_30920853的博客 475

Android gdbserver远程调试native程序方法

PC上使用gdb远程调试android native程序 准备工作: android native程序:hello android 上运行调试工具:gdbserver pc上调试工具:arm-xxx-gdb 0.编译native程序 添加编译选项-g  去掉编译选项strip LOCAL_PATH := $(call my-dir) include $(C

breezedong的专栏 1767

linux开发板没有网口使用gdb,通过gdbserver及arm-linux-gdb远程调试开发板上的程序

一.前言嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上运行。目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。在此我们还不能直接采用li...

weixin_35902168的博客 713

linux系统 qt调试,Linux下Qt Creator远程调试(redhat5+mini6410)

当我们开发嵌入式系统下的Qt应用程序时,有时候不能在虚拟机上进行调试,这时候我们需要通过远程调试的方式在PC上调试嵌入式系统下的Qt应用程序。这样就产生了交叉调试。本文环境介绍:虚拟机:vmware8.0.4 build-744019Linux操作系统:Red Hat Enterprise Linux5交叉编译工具:arm-linux-gcc目标板:mini6410(友善提供),已移植Qt4.7Q...

weixin_35514865的博客 1033
上一篇: 获取 Android 模拟器的 MAC
下一篇: gdb 远程qemu-arm调试
span76
博客等级 码龄18年 117粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值