新聞中心
在ARM架構(gòu)的Linux系統(tǒng)上,glibc6是一種重要的C標(biāo)準(zhǔn)庫,它為程序員提供了大量的標(biāo)準(zhǔn)C函數(shù)。但是在使用過程中也常常會(huì)出現(xiàn)一些問題,例如程序運(yùn)行異常、段錯(cuò)誤等。這時(shí)就需要借助一些調(diào)試工具來找出問題所在,本文將介紹一些常用的。

10年積累的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有銅川免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1. gdb
gdb是GNU調(diào)試器的簡(jiǎn)稱,是一種強(qiáng)大的調(diào)試工具。它可以對(duì)程序進(jìn)行單步跟蹤、打印變量的值、修改程序的狀態(tài)等功能,幫助程序員定位程序中的錯(cuò)誤。
使用gdb調(diào)試程序的流程大致如下:
1)編譯程序時(shí)加上-g參數(shù),生成可調(diào)試的程序:
$ gcc -g -o program program.c
2)啟動(dòng)gdb:
$ gdb program
3)設(shè)置斷點(diǎn):
(gdb) break mn
4)運(yùn)行程序:
(gdb) run
5)執(zhí)行單步調(diào)試:
(gdb) next
6)打印變量的值:
(gdb) print var
7)修改變量的值:
(gdb) set var=10
8)退出gdb:
(gdb) quit
除了以上基本用法外,gdb還可以對(duì)內(nèi)存進(jìn)行調(diào)試、生成程序的核心轉(zhuǎn)儲(chǔ)文件等。
2. valgrind
valgrind是一款常用的內(nèi)存調(diào)試工具,可以檢測(cè)內(nèi)存泄露、越界訪問等問題。它可以運(yùn)行在ARM架構(gòu)的Linux系統(tǒng)上,但需要安裝valgrind for ARM。
使用valgrind調(diào)試程序的流程大致如下:
1)安裝valgrind for ARM:
$ sudo apt-get install valgrind-arm-linux
2)編譯程序時(shí)不用加-g參數(shù):
$ gcc -o program program.c
3)啟動(dòng)valgrind:
$ valgrind –tool=memcheck –leak-check=yes ./program
4)查看內(nèi)存信息:
==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可以檢測(cè)多線程程序中的數(shù)據(jù)競(jìng)爭(zhēng)問題,不過與ARM架構(gòu)的Linux下的glibc6調(diào)試工具關(guān)聯(lián)不大,這里不再深入介紹。
3. strace
strace是一款系統(tǒng)調(diào)用跟蹤工具,可以輸出程序運(yùn)行過程中調(diào)用的系統(tǒng)調(diào)用。通過使用strace,程序員可以了解程序的運(yùn)行情況,找出程序中的問題。
使用strace調(diào)試程序的流程大致如下:
1)編譯程序:
$ gcc -o program program.c
2)啟動(dòng)strace:
$ strace ./program
3)運(yùn)行程序:
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)查看程序調(diào)用的系統(tǒng)調(diào)用:
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還可以輸出文件讀寫情況、網(wǎng)絡(luò)通信情況等,方便程序員進(jìn)行問題定位。
本文介紹了一些常用的,包括gdb、valgrind和strace。這些工具提供了不同的調(diào)試方式,程序員可以根據(jù)需要選擇合適的工具。在程序開發(fā)過程中,遇到問題時(shí),調(diào)試工具是很好的助手,使用調(diào)試工具可以提高程序員的調(diào)試效率,縮短問題定位的時(shí)間。
相關(guān)問題拓展閱讀:
- PVE內(nèi)核在ARM64下安裝及編譯
- arm嵌入式linux系統(tǒng)開發(fā)詳解怎么樣
PVE內(nèi)核在ARM64下安裝及編譯
以下命令在Linux root下進(jìn)行
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.安裝編譯環(huán)境
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
若山雀是出現(xiàn)libncurses5-dev安裝依賴錯(cuò)誤,用aptitude安裝即可解決
5. Git pve內(nèi)核源碼
git
6. 修改Makefile文件
23行內(nèi)容 KERNEL_ARCH=x86和之后 修改成如下圖所示:
7. 在pve-kernel/debian/rules.d文件目錄下生成文件arm64.mk,內(nèi)容如下
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,修改結(jié)果如下圖所示
9. Make all
10.最終編譯成功后會(huì)生唯橡成四個(gè)文件包,使用dpkg -i命令安裝四個(gè)deb包,即可完成pve內(nèi)核的安裝。
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系統(tǒng)開發(fā)詳解怎么樣
嵌入式系統(tǒng)是目前更流行的計(jì)算機(jī)應(yīng)用技碰橡術(shù)之一?!禔RM嵌入式Linux系統(tǒng)開發(fā)詳解》由淺入深地講解基于ARM體系結(jié)構(gòu)的嵌入式
Linux系統(tǒng)開發(fā),內(nèi)容包括嵌入式系統(tǒng)的基本概念、應(yīng)用領(lǐng)域等基礎(chǔ)知識(shí);ARM處理器的體系結(jié)構(gòu)和功能特點(diǎn);Linux系統(tǒng)內(nèi)核結(jié)構(gòu)和移植方法、
Bootloader功能和移笑并旁植;Linux應(yīng)用程序開發(fā),包括如何操作文件、管理內(nèi)存、訪問串口、多線程和多進(jìn)程技術(shù),并且剖析了應(yīng)用程序的結(jié)構(gòu)和工作
流程;Linux系統(tǒng)設(shè)備驅(qū)動(dòng)程序開發(fā),包括如何編寫內(nèi)核模塊、驅(qū)動(dòng)程序分類和功能特點(diǎn),并且給出了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)、Flash設(shè)備驅(qū)動(dòng)和USB設(shè)備驅(qū)動(dòng)的
實(shí)例分析。
《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》附帶1張DVD光盤,內(nèi)容為專門為《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》錄制的9小時(shí)視頻、《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》涉及的源代碼、Ubuntu安裝光盤的鏡像文件和另外贈(zèng)送的35小時(shí)Linux專題學(xué)習(xí)視頻。
《ARM嵌入式Linux系統(tǒng)開發(fā)詳解》適合廣大從事嵌入式Linux系統(tǒng)開發(fā)人員、對(duì)嵌入式Linux系統(tǒng)開發(fā)有興趣的計(jì)算蔽清機(jī)愛好者,以及大中專院校學(xué)生閱讀。
關(guān)于arm linux libc6 dbg的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁標(biāo)題:ARM架構(gòu)Linux下的glibc6調(diào)試工具(armlinuxlibc6dbg)
當(dāng)前路徑:http://www.fisionsoft.com.cn/article/coceijh.html


咨詢
建站咨詢
