linux常用命令--开发调试篇

本文介绍了Linux系统中一些常用的开发和调试命令,包括file、ldd、nm、strings、size、strip、readelf、objdump、netstat、ps、top、ulimit -c、gdb、addr2line等,通过实例解析了它们的功能和使用方法,帮助开发者更好地理解和解决问题。
摘要由CSDN通过智能技术生成

 

 

前言

Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。

示例程序

我们用一个小程序,来帮助后面我们对这些命令的描述,程序清单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)

程序内容是在main函数中调用test,计算a/b的值,其中b的值为0,因此程序由于除0错误异常终止。

查看文件基本信息--file

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文件中还保留着符号信息以及调试信息等不影响程序运行的内容。

查看程序依赖库--ldd

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)

我们可以看到cmdTest依赖了libc.so等库。

查看函数或者全局变量是否存在于elf文件中--nm

nm命令用于查看elf文件的符号信息。文件编译出来之后,我们可能不知道新增加的函数或者全局变量是否已经成功编译进去。这时候,我们可以使用nm命令来查看。
例如,查看前面所提到的elf文件有没有test函数,可以用命令:

nm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值