在ARM架构的Linux系统上,glibc6是一种重要的C标准库,它为程序员提供了大量的标准C函数。但是在使用过程中也常常会出现一些问题,例如程序运行异常、段错误等。这时就需要借助一些调试工具来找出问题所在,本文将介绍一些常用的。
10年积累的成都网站设计、做网站、成都外贸网站建设公司经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有铜川免费网站建设让你可以放心的选择与我们合作。
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。这些工具提供了不同的调试方式,程序员可以根据需要选择合适的工具。在程序开发过程中,遇到问题时,调试工具是很好的助手,使用调试工具可以提高程序员的调试效率,缩短问题定位的时间。
相关问题拓展阅读:
以下命令在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系统内核结构和移植方法、
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元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
网页标题:ARM架构Linux下的glibc6调试工具(armlinuxlibc6dbg)
分享网址:http://www.stwzsj.com/qtweb/news46/6896.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联