ARM架构Linux下的glibc6调试工具 (arm linux libc6 dbg)

在ARM架构的Linux系统上,glibc6是一种重要的C标准库,它为程序员提供了大量的标准C函数。但是在使用过程中也常常会出现一些问题,例如程序运行异常、段错误等。这时就需要借助一些调试工具来找出问题所在,本文将介绍一些常用的。

1. gdb

gdb是GNU调试器的简称,是一种强大的调试工具。它可以对程序进行单步跟踪、打印变量的值、修改程序的状态等功能,帮助程序员定位程序中的错误。

使用gdb调试程序的流程大致如下:

1)编译程序时加上-g参数,生成可调试的程序:

$ gcc -g -o program program.c

2)启动gdb:

$ gdb program

3)设置断点:

(gdb) break mn

4)运行程序:

(gdb) run

5)执行单步调试:

(gdb) next

6)打印变量的值:

(gdb) print var

7)修改变量的值:

(gdb) set var=10

8)退出gdb:

(gdb) quit

除了以上基本用法外,gdb还可以对内存进行调试、生成程序的核心转储文件等。

2. valgrind

valgrind是一款常用的内存调试工具,可以检测内存泄露、越界访问等问题。它可以运行在ARM架构的Linux系统上,但需要安装valgrind for ARM。

使用valgrind调试程序的流程大致如下:

1)安装valgrind for ARM:

$ sudo apt-get install valgrind-arm-linux

2)编译程序时不用加-g参数:

$ gcc -o program program.c

3)启动valgrind:

$ valgrind –tool=memcheck –leak-check=yes ./program

4)查看内存信息:

==12345== Memcheck, a memory error detector

==12345== Copyright (C) 2023-2023, and GNU GPL’d, by Julian Seward et al.

==12345== Using Valgrind-3.13.0.SVN and LibVEX; rerun with -h for copyright info

==12345== Command: ./program

==12345==

Hello, world!

==12345==

==12345== HEAP SUMMARY:

==12345== in use at exit: 0 bytes in 0 blocks

==12345== total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated

==12345==

==12345== All heap blocks were freed — no leaks are possible

==12345==

==12345== For counts of detected and suppressed errors, rerun with: -v

==12345== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

5)退出valgrind:

==12345==

==12345== HEAP SUMMARY:

==12345== in use at exit: 0 bytes in 0 blocks

==12345== total heap usage: 1 allocs, 1 frees, 1,024 bytes allocated

==12345==

==12345== All heap blocks were freed — no leaks are possible

==12345==

==12345== For counts of detected and suppressed errors, rerun with: -v

==12345== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

$

valgrind还有其他的工具,例如helgrind可以检测多线程程序中的数据竞争问题,不过与ARM架构的Linux下的glibc6调试工具关联不大,这里不再深入介绍。

3. strace

strace是一款系统调用跟踪工具,可以输出程序运行过程中调用的系统调用。通过使用strace,程序员可以了解程序的运行情况,找出程序中的问题。

使用strace调试程序的流程大致如下:

1)编译程序:

$ gcc -o program program.c

2)启动strace:

$ strace ./program

3)运行程序:

execve(“./program”, [“./program”], []) = 0

brk(NULL) = 0x55a08fb3c000

access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)

access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)

openat(AT_FDCWD, “/etc/ld.so.cache”, O_RDON|O_CLOEXEC) = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=78687, …}) = 0

mmap(NULL, 78687, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f36c9fb2023

close(3) = 0

……

4)查看程序调用的系统调用:

openat(AT_FDCWD, “/etc/ld.so.cache”, O_RDON|O_CLOEXEC) = 3

close(3) = 0

access(“/etc/ld.so.nohwcap”, F_OK) = -1 ENOENT (No such file or directory)

access(“/etc/ld.so.preload”, R_OK) = -1 ENOENT (No such file or directory)

openat(AT_FDCWD, “/lib/aarch64-linux-gnu/libc.so.6”, O_RDON|O_CLOEXEC) = 3

read(3, “\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0D.\2\0\0\0\0\0″…, 832) = 832

lseek(3, 4294971392, SEEK_SET) = -1 ESPIPE (Illegal seek)

……

5)退出strace:

$ exit_group(0) = ?

+++ exited with 0 +++

strace还可以输出文件读写情况、网络通信情况等,方便程序员进行问题定位。

本文介绍了一些常用的,包括gdb、valgrind和strace。这些工具提供了不同的调试方式,程序员可以根据需要选择合适的工具。在程序开发过程中,遇到问题时,调试工具是很好的助手,使用调试工具可以提高程序员的调试效率,缩短问题定位的时间。

相关问题拓展阅读:

  • PVE内核在ARM64下安装及编译
  • arm嵌入式linux系统开发详解怎么样

PVE内核在ARM64下安装及编译

以下命令在Linux root下进行

1.apt-getinstall gnupg2 wget –y

2.加入Proxmox 软逗山早件包源

wget -qO –

| sudo apt-key add echo “deb

buster pve-no-subscription ” | sudotee /etc/apt/sources.list.d/buster-pvetest.list

3.apt-getupdate

4.安装编译环境

apt-get install build-essentialasciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzipzlib1g-dev libc6-dev subversion flex uglifyjs p7zip p7zip-full mtp libssl-devtexinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automakelibtool autopoint device-tree-compiler screen

apt-get install python3-dev  python3-sphinx lintian bc bison libdw-devlibiberty-dev libnuma-dev libslang2-dev lz4 rsync  libpve-common-perl dh-make docbook5-xml

若山雀是出现libncurses5-dev安装依赖错误,用aptitude安装即可解决

5. Git pve内核源码

git

6. 修改Makefile文件

23行内容 KERNEL_ARCH=x86和之后 修改成如下图所示:

7.  在pve-kernel/debian/rules.d文件目录下生成文件arm64.mk,内容如下

KERNEL_BUILD_ARCH= arm64

KERNEL_HEADER_ARCH   = $(KERNEL_BUILD_ARCH)

KERNEL_BUILD_IMAGE     = Image

KERNEL_IMAGE_PATH =arch/$(KERNEL_BUILD_ARCH)/boot/${KERNEL_BUILD_IMAGE}

KERNEL_INSTALL_FILE= vmlinuz

8.  修改pve-kernel/debian/rules文件,将rysnc中的tools修改成source,修改结果如下图所示

9.  Make all

10.最终编译成功后会生唯橡成四个文件包,使用dpkg -i命令安装四个deb包,即可完成pve内核的安装。

linux-tools-{KERNEL_VER}_arm64.deb

linux-tools-5.0-dbgsym_{KERNEL_VER}_arm64.deb

pve-headers-{KERNEL_VER}_arm64.deb

pve-kernel-{KERNEL_VER}_arm64.deb

arm嵌入式linux系统开发详解怎么样

嵌入式系统是目前更流行的计算机应用技碰橡术之一。《ARM嵌入式Linux系统开发详解》由浅入深地讲解基于ARM体系结构的嵌入式

Linux系统开发,内容包括嵌入式系统的基本概念、应用领域等基础知识;ARM处理器的体系结构和功能特点;Linux系统内核结构和移植方法、

Bootloader功能和移笑并旁植;Linux应用程序开发,包括如何操作文件、管理内存、访问串口、多线程和多进程技术,并且剖析了应用程序的结构和工作

流程;Linux系统设备驱动程序开发,包括如何编写内核模块、驱动程序分类和功能特点,并且给出了网络设备驱动、Flash设备驱动和USB设备驱动的

实例分析。

《ARM嵌入式Linux系统开发详解》附带1张DVD光盘,内容为专门为《ARM嵌入式Linux系统开发详解》录制的9小时视频、《ARM嵌入式Linux系统开发详解》涉及的源代码、Ubuntu安装光盘的镜像文件和另外赠送的35小时Linux专题学习视频。

《ARM嵌入式Linux系统开发详解》适合广大从事嵌入式Linux系统开发人员、对嵌入式Linux系统开发有兴趣的计算蔽清机爱好者,以及大中专院校学生阅读。

关于arm linux libc6 dbg的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/208081.html<

(0)
管理的头像管理
上一篇2025-04-08 20:24
下一篇 2025-04-08 20:25

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注