中文字幕亚洲第一精品|精品国产免费一区二区|久久婷婷五月六月综合版|中文字幕熟妇久久久人妻|久久综合精品国产一区无码|国产成人精品永久免费视频|午夜亚洲国产精品理论片a级|久久精品一区二区三区无码护土

 訪問手機版  

Linux常用命令|Linux培訓(xùn)學(xué)習(xí)|考試認證|工資待遇與招聘,認準(zhǔn)超級網(wǎng)工!

招聘|合作 登陸|注冊

網(wǎng)絡(luò)工程師培訓(xùn)

當(dāng)前位置:網(wǎng)絡(luò)工程師 > 技術(shù)課程 > linux > 熱點關(guān)注 > linux常用命令

Linux 常用命令:開發(fā)調(diào)試篇

時間:2019-08-16

linux常用命令_常用dos命令大全及其用法_常用linux命令

前言

Linux常用命令中有一些命令可以在開發(fā)或調(diào)試過程中起到很好的幫助作用,有些可以幫助了解或優(yōu)化我們的程序,有些可以幫我們定位疑難問題。本文將簡單介紹一下這些命令。

我們用一個小程序,來幫助后面我們對這些命令的描述,程序清單cmdTest.c如下:

#include<stdio.h>
int test(int a,int b)
{
return a/b;
}
int main(int argc,char *argv[])
{
int a = 10;
int b = 0;
printf("a=%d,b=%d\n",a,b);
test(a,b);
return 0;
}

編譯獲得elf文件cmdTest并運行:

gcc -g -o cmdTest cmdTest.c
./cmdTest
a=10,b=0
Floating point exception (core dumped)

程序內(nèi)容是在main函數(shù)中調(diào)用test,計算a/b的值,其中b的值為0,因此程序由于除0錯誤異常終止。

file cmdTest
cmdTest: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=448e1c34b4c548120e2c04f6a2bfce4e6d2281a3, not stripped

通過file命令可以看到cmdTest的類型為elf,是64位、運行于x86-64的程序,not striped表明elf文件中還保留著符號信息以及調(diào)試信息等不影響程序運行的內(nèi)容。

ldd cmdTest
linux-vdso.so.1 => (0x00007ffc8e548000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0621931000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0621cf6000)

常用dos命令大全及其用法_linux常用命令_常用linux命令

我們可以看到cmdTest依賴了libc.so等庫。

nm命令用于查看elf文件的符號信息。文件編譯出來之后,我們可能不知道新增加的函數(shù)或者全局變量是否已經(jīng)成功編譯進去。這時候,我們可以使用nm命令來查看。

例如,查看前面所提到的elf文件有沒有test函數(shù),可以用命令:

nm cmdTest|grep test
000000000040052d T test #打印結(jié)果

按照地址順序列出符號信息:

nm -n cmdTest
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
w _Jv_RegisterClasses
w __gmon_start__
U __libc_start_main@@GLIBC_2.2.5
U printf@@GLIBC_2.2.5
00000000004003e0 T _init
0000000000400440 T _start
0000000000400470 t deregister_tm_clones
00000000004004a0 t register_tm_clones
00000000004004e0 t __do_global_dtors_aux
0000000000400500 t frame_dummy
000000000040052d T test
0000000000400540 T main
0000000000400590 T __libc_csu_init
0000000000400600 T __libc_csu_fini
(列出部分內(nèi)容)
 上一個教程:Linux基本的操作