你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linux下几个正确调试手段的命令

[复制链接]
gaosmile 发布时间:2020-5-14 13:48
文章目录
  • #file
  • #ldd
  • #ltrace
  • #hexdump
  • #strings
  • #readelf
  • #objdump
  • #strace
  • #nm
  • #gdb
    4 `$ p- M; p' A9 K3 u, ^' X

磨刀不误砍柴工,Linux下也是一样,你掌握了正确的调试手段,对你的开发会非常有帮助。总结的这几个命令非常经典。& ?6 j0 y$ ]5 ]

#file

这个命令可以查看文件的确切文件类型

微信图片_20200514134308.jpg

微信图片_20200514134311.jpg

#ldd

如何找到可执行文件所依赖的库?这就是ldd命令出现的原因,有人的地方就有江湖,有需要我的地方就应该出现我。针对动态链接的二进制文件运行它会显示其所有依赖的库及其路径。

微信图片_20200514134314.png

#ltrace

这个命令可以追踪命令运行的时候跑了哪些函数,可以作为堆栈调用跟踪调试使用。ltrace能够跟踪进程的库函数调用,它会显现出哪个库函数被调用。

详细链接:

http://www.cnblogs.com/machangwei-8/p/10388938.html

-a 对齐具体某个列的返回值。8 m0 [; n7 m# F' l* r
-c 计算时间和调用,并在程序退出时打印摘要。8 t% h% ?1 C- ?* ?1 b- L4 f! \  k- U! {
-C 解码低级别名称(内核级)为用户级名称。) Q3 v5 ^. T8 T/ `) p% p* Z% V- C
-d 打印调试信息。& _# x; f6 s1 h8 w
-e 改变跟踪的事件。
0 G: F3 ^3 B2 H-f 跟踪子进程。+ D2 Y$ z7 X; O& a; k' ]7 {
-h 打印帮助信息。9 q6 I( C$ i/ m( h
-i 打印指令指针,当库调用时。. T3 G4 d/ M7 U" P! G& k
-l 只打印某个库中的调用。" P) d8 _4 K& O
-L 不打印库调用。6 X) s& P; a2 }/ Z4 |1 M- L. r$ u
-n, --indent=NR 对每个调用级别嵌套以NR个空格进行缩进输出。
8 h. M8 ]6 v9 T+ [  ^4 U  D; a-o, --output=file 把输出定向到文件。
8 d9 ]' r+ S7 v" r- z  c-p PID 附着在值为PID的进程号上进行ltrace。
) o1 m, A3 w+ v$ x, l* V4 S-r 打印相对时间戳。
, _8 |  }& w8 J, m-s STRLEN 设置打印的字符串最大长度。! D, R  n  N4 x! C5 _
-S 显示系统调用。
2 K( v2 I9 o/ |" @4 ~: g: Z-t, -tt, -ttt 打印绝对时间戳。5 g$ d2 Z3 C) {
-T 输出每个调用过程的时间开销。
2 m3 y) p  I& y' v0 e' x- }-u USERNAME 使用某个用户id或组ID来运行命令。
4 n2 |" b5 w, i' C8 Q' H: L-V, --version 打印版本信息,然后退出。! h- l3 p7 L8 L) M' P/ D; Z
-x NAME treat the global NAME like a library subroutine.
weiqifa0@weiqifa-System-Product-Name:~$ ltrace ls
: I4 W; X: R( t( n9 Y5 Tstrrchr("ls", '/')                                                     = nil- O1 `6 Z* l- ~) }( {! N  d4 `
setlocale(LC_ALL, "")                                                  = "zh_CN.UTF-8"
) `+ n* L# }* k8 k( Vbindtextdomain("coreutils", "/usr/share/locale")                       = "/usr/share/locale"+ R6 l" C+ O3 b  ?$ p$ w7 p. h- z; X
textdomain("coreutils")                                                = "coreutils"! f# J: K/ x  `. W  B
__cxa_atexit(0x5594e2fd9ca0, 0, 0x5594e31ed008, 0x736c6974756572)      = 0- k; Q; G- h2 m2 Q/ ?
isatty(1)                                                              = 10 |9 u& S! n3 g8 Q. U8 p
getenv("QUOTING_STYLE")                                                = nil
& {: p8 T% s" n; e! Ngetenv("COLUMNS")                                                      = nil! A0 ~! A0 u/ ?6 o# ^8 ~
ioctl(1, 21523, 0x7fff061929c0)                                        = 0/ L4 p  V: U& [
getenv("TABSIZE")                                                      = nil) V. I4 \( o# r' p- I
getopt_long(1, 0x7fff06192af8, "abcdfghiklmnopqrstuvw:xABCDFGHI:"..., 0x5594e31ec2e0, -1) = -1
1 Y+ h- c  B9 n0 ]/ x  y/ Ygetenv("LS_BLOCK_SIZE")                                                = nil) W1 A* f& [1 u! a. \$ [* K
getenv("BLOCK_SIZE")                                                   = nil( B, B+ L( w( J, G$ R$ F- H
getenv("BLOCKSIZE")                                                    = nil
( G6 u' I7 v# b2 p! Q3 u5 Ygetenv("POSIXLY_CORRECT")                                              = nil
/ ~& d8 K3 }* W2 c1 d" |/ w8 Tgetenv("BLOCK_SIZE")                                                   = nil
; c7 L: G' P; N( N( n; f__errno_location()                                                     = 0x7f3801ac0258) l/ N9 o3 l/ L  B
memcpy(0x5594e4a91a50, "\003\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 56) = 0x5594e4a91a50
% m3 T2 ~5 G# u2 H__errno_location()                                                     = 0x7f3801ac02580 P( @4 ^) X! I9 d$ y
memcpy(0x5594e4a91a90, "\003\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 56) = 0x5594e4a91a904 D& e! Z3 r  y
getenv("TZ")                                                           = nil
) ?  Y0 n  G2 [' j) _2 ustrlen(".")                                                            = 1# [8 i+ {; }2 U2 ]0 y; o  E( }
memcpy(0x5594e4a969c0, ".\0", 2)                                       = 0x5594e4a969c0
4 T" _8 `& L% I1 Z) U__errno_location()                                                     = 0x7f3801ac0258
  q& i1 h1 k/ l2 f6 w- p7 W$ uopendir(".")                                                           = 0x5594e4a969e02 s5 Q( M9 ~  V4 ~; a: [! D" I
readdir(0x5594e4a969e0)                                                = 0x5594e4a96a10
+ I  \# P8 N2 m5 |. H__errno_location()                                                     = 0x7f3801ac0258" Y$ t, A. b- E& _! x" ]* C
__ctype_get_mb_cur_max()                                               = 6* x# I# @3 }8 C/ u" U# }1 R
strlen("Desktop")                                                      = 7
/ J! Y+ q3 A3 ?- O' vstrlen("Desktop")                                                      = 79 |5 v5 m0 ]4 o1 e
memcpy(0x5594e4a9ea20, "Desktop\0", 8)                                 = 0x5594e4a9ea20% W; B. `( ~) Q. N0 ?, |
readdir(0x5594e4a969e0)                                                = 0x5594e4a96a30
* `4 r4 Y& A, H( ]# p) w, {. sreaddir(0x5594e4a969e0)                                                = 0x5594e4a96a50
! z4 J) e0 A" [& \+ u; Vreaddir(0x5594e4a969e0)                                                = 0x5594e4a96a70) O. B$ t. Q9 u/ P
readdir(0x5594e4a969e0)                                                = 0x5594e4a96a90
# X5 s, {2 `2 p7 j$ W" Yreaddir(0x5594e4a969e0)                                                = 0x5594e4a96ab0
3 Z& r& g; F+ }__errno_location()                                                     = 0x7f3801ac0258* c* ^% ~2 L( V% Y% Q' B
__ctype_get_mb_cur_max()                                               = 60 C9 t5 Z1 J: W
strlen("examples.desktop")                                             = 16
& \, m0 K) F. K  G6 k& @+ Lstrlen("examples.desktop")                                             = 16
) K0 W0 v1 E& @9 i- cmemcpy(0x5594e4a9ea40, "examples.desktop\0", 17)                       = 0x5594e4a9ea40
) n$ C7 S9 ^& s) Preaddir(0x5594e4a969e0)                                                = 0x5594e4a96ad8
% y8 K8 e5 U1 l6 f1 S9 _5 ^readdir(0x5594e4a969e0)                                                = 0x5594e4a96af8/ B: V6 T" x: S( F4 b$ [
readdir(0x5594e4a969e0)                                                = 0x5594e4a96b20
; i3 L6 a! M1 b0 q3 |" @__errno_location()                                                     = 0x7f3801ac0258
. \: M7 e* u5 X+ K8 K; b__ctype_get_mb_cur_max()                                               = 6# [6 ?2 z) I. Y4 M
strlen("Public")                                                       = 6
9 O4 e& e0 ~" [5 v, [3 Q/ qstrlen("Public")                                                       = 6
5 n( t9 d3 D* v% Ymemcpy(0x5594e4a9ea60, "Public\0", 7)                                  = 0x5594e4a9ea60( P6 S$ q8 P# t0 k: ?9 B/ d
readdir(0x5594e4a969e0)                                                = 0x5594e4a96b40
+ }0 K* O$ V) u" E& b, m* t1 mreaddir(0x5594e4a969e0)                                                = 0x5594e4a96b68
' m" x% J$ k  }/ U__errno_location()                                                     = 0x7f3801ac0258
5 D' w# }6 `% Z) N9 @0 i__ctype_get_mb_cur_max()                                               = 66 p- v6 Y' n5 X; L- z3 |
strlen("Pictures")                                                     = 8- Q1 ?/ a  Z' M- o; J: \) R1 u
strlen("Pictures")                                                     = 8* i5 V& x: l0 J* n
memcpy(0x5594e4a9ea80, "Pictures\0", 9)                                = 0x5594e4a9ea80- t8 q7 R4 x) A( o/ f0 [
readdir(0x5594e4a969e0)                                                = 0x5594e4a96b88
2 |& `4 l( I' Y2 H2 greaddir(0x5594e4a969e0)                                                = 0x5594e4a96ba89 h% T: I2 d& @1 l! k+ L- P' G5 f% G
readdir(0x5594e4a969e0)                                                = 0x5594e4a96bc0
* p4 L$ v  r+ {0 |2 j8 m8 jreaddir(0x5594e4a969e0)                                                = 0x5594e4a96bd8' Q. Z* G% E, H( ?2 T1 D$ ?
readdir(0x5594e4a969e0)                                                = 0x5594e4a96bf8% l" h7 E1 p2 A7 U1 a& a9 Q& |
readdir(0x5594e4a969e0)                                                = 0x5594e4a96c286 C8 k* B  @5 X! h8 j' ?
__errno_location()                                                     = 0x7f3801ac02586 }- ~8 @1 A$ S: Q$ [; G
__ctype_get_mb_cur_max()                                               = 6* p3 ]2 e1 A' w0 O
strlen("Videos")                                                       = 6
4 C2 S( M5 [0 J2 Ostrlen("Videos")                                                       = 6
, F  g3 v; x) U8 ememcpy(0x5594e4a9eaa0, "Videos\0", 7)                                  = 0x5594e4a9eaa0$ a! v* B% h+ S9 t" z+ A
readdir(0x5594e4a969e0)                                                = 0x5594e4a96c48
# C+ T3 j3 r9 L" r. Q8 f__errno_location()                                                     = 0x7f3801ac0258
6 P+ J* U8 M/ Q/ U- g5 A' u__ctype_get_mb_cur_max()                                               = 6
, F3 T" l7 W0 J$ ?. V6 rstrlen("Music")                                                        = 5( t) a8 h$ p' F) d
strlen("Music")                                                        = 56 Z/ [" H/ p5 P* r0 w
memcpy(0x5594e4a9eac0, "Music\0", 6)                                   = 0x5594e4a9eac0
4 T( \9 G7 W: u7 a1 s7 Yreaddir(0x5594e4a969e0)                                                = 0x5594e4a96c68
# c/ g9 |% C& Y7 M' t* W& {" oreaddir(0x5594e4a969e0)                                                = 0x5594e4a96c80* ], c- k. }% x: ?# \' D
readdir(0x5594e4a969e0)                                                = 0x5594e4a96ca0
$ R6 \1 X) u4 _* _# Sreaddir(0x5594e4a969e0)                                                = 0x5594e4a96cc0. M' G, m& }, ?7 Y8 U/ H" p
readdir(0x5594e4a969e0)                                                = 0x5594e4a96ce0
; H! h3 _6 M$ z7 l! Y  [readdir(0x5594e4a969e0)                                                = 0x5594e4a96d00
) B$ S; d4 J' ^1 {readdir(0x5594e4a969e0)                                                = 0x5594e4a96d20# q: x4 q* |+ D7 I1 Z4 X
__errno_location()                                                     = 0x7f3801ac02582 x" v; L+ E* ?5 W: u' x3 v
__ctype_get_mb_cur_max()                                               = 6
6 j2 \" d6 e* \/ jstrlen("c")                                                            = 1
3 F! j3 k' g3 }: h. S6 `4 }strlen("c")                                                            = 11 u! v( }; E' }; Y9 v' X3 w7 o  u
memcpy(0x5594e4a9eae0, "c\0", 2)                                       = 0x5594e4a9eae0
) ~. t& D& ~9 [: c* Oreaddir(0x5594e4a969e0)                                                = 0x5594e4a96d38' ~7 ~( n  ]2 C9 {% V
readdir(0x5594e4a969e0)                                                = 0x5594e4a96d58' y( k. O1 q/ i5 T# j
readdir(0x5594e4a969e0)                                                = 0x5594e4a96d78
9 p: V. V" J: U9 Nreaddir(0x5594e4a969e0)                                                = 0x5594e4a96d981 N+ v# ^/ V& c3 C2 ~- G' [
readdir(0x5594e4a969e0)                                                = 0x5594e4a96db8
- `. z4 O6 @. H% ]8 p* b, Creaddir(0x5594e4a969e0)                                                = 0x5594e4a96de0
( i# O: p$ G0 h( d! H& dreaddir(0x5594e4a969e0)                                                = 0x5594e4a96e00
' P. y4 f7 Z5 C5 A4 y" w__errno_location()                                                     = 0x7f3801ac0258
- y/ E7 l# o) Q' W  T__ctype_get_mb_cur_max()                                               = 6$ o1 p3 n; p- ?
strlen("Templates")                                                    = 9
" }4 H) t: [$ J9 istrlen("Templates")                                                    = 95 @4 z, X# [; O" v8 O' Q
memcpy(0x5594e4a9eb00, "Templates\0", 10)                              = 0x5594e4a9eb00
' m- S; ]1 A; \) q6 Dreaddir(0x5594e4a969e0)                                                = 0x5594e4a96e20; Y+ y: {& g4 F
readdir(0x5594e4a969e0)                                                = 0x5594e4a96e483 m) Y0 i0 t) _
readdir(0x5594e4a969e0)                                                = 0x5594e4a96e68
3 s  I  s9 \! X6 P/ U3 Areaddir(0x5594e4a969e0)                                                = 0x5594e4a96e88
/ Q% |4 E$ R3 j5 t* H1 @readdir(0x5594e4a969e0)                                                = 0x5594e4a96eb0
# j4 z3 n& s1 a: wreaddir(0x5594e4a969e0)                                                = 0x5594e4a96ed01 D$ Y7 V" a' d; P7 X
readdir(0x5594e4a969e0)                                                = 0x5594e4a96ee8! n7 n2 @& f% o# O1 H7 P5 O/ ~
__errno_location()                                                     = 0x7f3801ac0258# V( }' P8 M& K0 x
__ctype_get_mb_cur_max()                                               = 68 N3 ^9 c9 I! d2 B; \; `
strlen("Downloads")                                                    = 9
2 z* k$ [; ?, E$ z: C& d3 Ustrlen("Downloads")                                                    = 9
# s5 \5 ?1 }( l0 j# z& p6 g  pmemcpy(0x5594e4a9eb20, "Downloads\0", 10)                              = 0x5594e4a9eb20
2 d. K! a. {! O* L# s6 W) Creaddir(0x5594e4a969e0)                                                = 0x5594e4a96f08) b6 n1 ?* T/ y8 K" d: J+ u
__errno_location()                                                     = 0x7f3801ac0258
9 W7 j  X# ~; f  g9 l__ctype_get_mb_cur_max()                                               = 6) e: S$ `3 T! z5 S
strlen("Documents")                                                    = 9
6 l' I. F7 y) j4 `9 \  P" D( \+ _strlen("Documents")                                                    = 93 K/ O) ?' c- t8 u$ A8 G* ?5 Z% l
memcpy(0x5594e4a9eb40, "Documents\0", 10)                              = 0x5594e4a9eb40$ H2 H) d. ?* f4 a  m
readdir(0x5594e4a969e0)                                                = 0/ s% j3 p* h% R9 p
closedir(0x5594e4a969e0)                                               = 0. W, o8 |( g$ T0 U8 e
_setjmp(0x5594e31ed300, 0x7f3801f3f3f0, 0x5594e4a96a30, 0x5594e4a92330) = 0
) O3 c+ F% e7 |7 S__errno_location()                                                     = 0x7f3801ac0258
# q& A# i7 p$ U6 [) b3 bstrcoll("Downloads", "Documents")                                      = 4  R' H. Q! i$ n) F+ b6 F8 E9 k
__errno_location()                                                     = 0x7f3801ac0258
+ g8 G) ]# i  ]strcoll("Templates", "Documents")                                      = 38 i: s3 {) ^8 y+ U' Y
__errno_location()                                                     = 0x7f3801ac0258
0 B# d% ]$ h) v4 G* Tstrcoll("Templates", "Downloads")                                      = 32 I& z: o( n" ]* g# [) G0 S7 M
memcpy(0x5594e4a96a28, "\330 \251\344\224U\0\0", 8)                    = 0x5594e4a96a28) ]8 X1 ~# J* v* Z9 I
__errno_location()                                                     = 0x7f3801ac0258
6 w; k1 Y: @: ~" l0 F4 X, E5 d6 K: a  estrcoll("Music", "c")                                                  = 1. z7 G: `. K. r4 H; n2 l; h( |
memcpy(0x5594e4a96a38, "H\037\251\344\224U\0\0", 8)                    = 0x5594e4a96a38
# ]8 z' n0 s# m/ K4 }% }/ ___errno_location()                                                     = 0x7f3801ac0258
( N5 C# D$ D0 u9 e1 Y- ~  Sstrcoll("c", "Documents")                                              = -9
. d; H: J" p& Y, u, V+ X9 O+ D' O__errno_location()                                                     = 0x7f3801ac0258
3 e1 A7 U, l- q( zstrcoll("Music", "Documents")                                          = 1" X/ T* \) J$ e5 b
__errno_location()                                                     = 0x7f3801ac0258
7 [- v7 b2 X! h/ Ustrcoll("Music", "Downloads")                                          = 19 E. W: W. j; ]) t& R  x- N
__errno_location()                                                     = 0x7f3801ac0258
. o1 G# t& X  _$ r" y: Cstrcoll("Music", "Templates")                                          = -2
/ P& W  s' u/ A4 _6 o- o; F: U9 P__errno_location()                                                     = 0x7f3801ac0258
% R7 e# i2 S& H6 y8 l8 @8 q( dstrcoll("Pictures", "Videos")                                          = -2
/ a/ R' s7 d" n__errno_location()                                                     = 0x7f3801ac0258
$ K9 f9 b! s0 h, w7 U) |strcoll("Public", "Pictures")                                          = 2
' s& T2 L* f) d+ L- h- A9 A8 h. X__errno_location()                                                     = 0x7f3801ac0258
  k; m& K( `8 A5 s- W& rstrcoll("Public", "Videos")                                            = -26 W% b9 E  O4 @6 k0 M# ?& \) ~
__errno_location()                                                     = 0x7f3801ac0258
: D( ?3 k3 j5 m$ }) f+ I# @" bstrcoll("Desktop", "examples.desktop")                                 = -12. T" @) D! a+ G) H! v8 ?$ m
__errno_location()                                                     = 0x7f3801ac0258
. t1 E! w7 ^' r* i0 Bstrcoll("Desktop", "Pictures")                                         = -2" q& o& P$ |$ M  B. W# k( k
__errno_location()                                                     = 0x7f3801ac0258
3 W4 Z4 S% z+ I' Kstrcoll("examples.desktop", "Pictures")                                = -2; J  z& I1 W! D9 V! v9 W+ |9 Z
memcpy(0x5594e4a96a40, "\270\035\251\344\224U\0\0\360\034\251\344\224U\0\0\200\036\251\344\224U\0\0", 24) = 0x5594e4a96a401 Z7 G" l0 [+ @7 y
__errno_location()                                                     = 0x7f3801ac0258: [* i& `# M9 b3 E6 R& h$ b
strcoll("Desktop", "c")                                                = 9
* a9 Q( u' s4 E: x8 `__errno_location()                                                     = 0x7f3801ac0258, [% W. @6 R9 D/ `
strcoll("Desktop", "Documents")                                        = -2" U4 N# n6 g- j, d
__errno_location()                                                     = 0x7f3801ac02589 G0 x3 m. e5 [* H0 Y. H' x
strcoll("examples.desktop", "Documents")                               = 12  j+ V( c: ~! W
__errno_location()                                                     = 0x7f3801ac0258
; F) A0 h' X; }" p# @strcoll("examples.desktop", "Downloads")                               = 12
% {& ]5 _; J! D& o9 A6 n! J__errno_location()                                                     = 0x7f3801ac0258: D0 z; h8 Z" ^- E0 t7 A
strcoll("examples.desktop", "Music")                                   = -1
5 D1 ?! o' Q3 a4 p$ j__errno_location()                                                     = 0x7f3801ac0258
' Z5 K/ F7 f, `! y( \strcoll("Pictures", "Music")                                           = 1
0 m) Q  E" `3 m) i$ }__errno_location()                                                     = 0x7f3801ac0258- h3 M* T' @" {# r; a7 v
strcoll("Pictures", "Templates")                                       = -1
1 ]+ G6 Y: \/ }1 l1 b__errno_location()                                                     = 0x7f3801ac0258
4 y/ b; H1 ^7 f0 L+ Wstrcoll("Public", "Templates")                                         = -1
" S1 Y7 s8 V6 N7 A__errno_location()                                                     = 0x7f3801ac02580 d# g4 {  I+ A! |
strcoll("Videos", "Templates")                                         = 19 j: [: e# D. }8 z" [+ z3 C! M
memcpy(0x5594e4a96a28, "\200\036\251\344\224U\0\0", 8)                 = 0x5594e4a96a28
1 E. b8 [. I9 W. b' {5 Orealloc(0, 480)                                                        = 0x5594e4a96ae0
/ W% w9 l0 m2 n/ d' |' X" \strlen("c")                                                            = 1
, V1 x% u- Z( l__ctype_get_mb_cur_max()                                               = 64 F; F& s/ A, t9 I3 H4 u
__ctype_get_mb_cur_max()                                               = 6/ I8 T5 y# J: t, f) O
strlen("Desktop")                                                      = 7
& f( b0 ?6 l( X4 V* E, n2 s* R__ctype_get_mb_cur_max()                                               = 6
% n% v* k. ?7 o$ g) x__ctype_get_mb_cur_max()                                               = 65 \5 w8 O9 \% @1 O6 n
strlen("Documents")                                                    = 9
4 u0 E  h$ K. \. }7 D( M__ctype_get_mb_cur_max()                                               = 6
$ L( E, ~" j& V( Q! ^__ctype_get_mb_cur_max()                                               = 6' Z- q% R5 b3 ]& O0 U" w
strlen("Downloads")                                                    = 93 ]. i/ m, g, P
__ctype_get_mb_cur_max()                                               = 6
1 n0 J; C7 j3 E1 K5 R7 \+ i__ctype_get_mb_cur_max()                                               = 6
, Q$ G1 l  Z+ ^) }% [, I8 [strlen("examples.desktop")                                             = 16
, K, {6 }2 ?7 s$ A8 `__ctype_get_mb_cur_max()                                               = 6
5 c7 M$ d4 D" c. ~__ctype_get_mb_cur_max()                                               = 6
! F* k/ U" ^9 z6 [; O0 G- G& \5 Kstrlen("Music")                                                        = 5
2 {1 l7 J4 F* H( D: j- H__ctype_get_mb_cur_max()                                               = 6) V6 m9 l9 j6 n3 e* E/ }
__ctype_get_mb_cur_max()                                               = 62 j! S2 M/ s1 Y
strlen("Pictures")                                                     = 8
: u& [; x" z: ?: c* F0 n" b__ctype_get_mb_cur_max()                                               = 6
/ O0 ?5 C8 }: n) W/ E) `5 N__ctype_get_mb_cur_max()                                               = 6# e2 I# \8 Q  E6 r! J0 |' c
strlen("Public")                                                       = 63 t/ x2 c, o4 K2 K0 j/ K! s
__ctype_get_mb_cur_max()                                               = 6
: z4 h$ V4 T+ a% d5 d2 ^__ctype_get_mb_cur_max()                                               = 6
5 _6 N* n" c- O- vstrlen("Templates")                                                    = 9
9 c4 C$ f* B! M__ctype_get_mb_cur_max()                                               = 6* E" V6 M3 D2 ?- m
__ctype_get_mb_cur_max()                                               = 6
) f& T8 R% G$ N; A$ I7 S2 Bstrlen("Videos")                                                       = 64 i( ]% v; G+ n6 Y( U" ^
__ctype_get_mb_cur_max()                                               = 6
* X& |  o! l- a$ d8 s' U4 Z* O: w__ctype_get_mb_cur_max()                                               = 6
2 ^9 I% k- Q# fstrlen("c")                                                            = 1
* a3 |7 y' T7 q, v__ctype_get_mb_cur_max()                                               = 63 o2 k# {0 J# k% C
__ctype_get_mb_cur_max()                                               = 6
$ R0 k6 D8 b/ j) K( a( [! |- Qstrlen("c")                                                            = 1, j) t# r% B0 h! s2 M- T
fwrite_unlocked("c", 1, 1, 0x7f3801f3f760)                             = 17 q' q) D* Y+ v2 P5 C0 p% S
__overflow(0x7f3801f3f760, 32, 2, 8)                                   = 32
+ q+ l7 ^8 x; @9 T% m__overflow(0x7f3801f3f760, 32, 3, 8)                                   = 329 G7 E' f1 }0 {$ j# l# G
strlen("Desktop")                                                      = 7
: C: q! Y0 ^/ ]7 C; v9 g: Q__ctype_get_mb_cur_max()                                               = 6  y, K" x, m  I' w5 k
__ctype_get_mb_cur_max()                                               = 63 [; S: J) s; N  Z- b; J5 {
strlen("Desktop")                                                      = 7
, m, C8 k# k0 A' d' Pfwrite_unlocked("Desktop", 1, 7, 0x7f3801f3f760)                       = 7
0 e+ h" s# n0 V) a+ P__overflow(0x7f3801f3f760, 32, 3, 8)                                   = 326 ?( ^8 W2 O% o3 b  v  S
__overflow(0x7f3801f3f760, 32, 4, 8)                                   = 32
: U$ [4 P8 W: a. U. E- \strlen("Documents")                                                    = 9% N4 e8 K* f6 T8 D9 G" ?
__ctype_get_mb_cur_max()                                               = 6
# h+ w2 b6 [% M: x" s/ ~- |__ctype_get_mb_cur_max()                                               = 66 s2 F/ s; E: i: R- \" K/ o9 h
strlen("Documents")                                                    = 9
" J$ V2 @0 e% N$ m3 c: }7 yfwrite_unlocked("Documents", 1, 9, 0x7f3801f3f760)                     = 9
( [4 Y' n" F7 N; z__overflow(0x7f3801f3f760, 32, 6, 8)                                   = 32# W; V# B( r! U6 X; c, U# `& h8 L3 \
__overflow(0x7f3801f3f760, 32, 7, 8)                                   = 32# B- k! g  U  Z% N4 r( ~
strlen("Downloads")                                                    = 9
) U+ R7 b% z# N3 S) R__ctype_get_mb_cur_max()                                               = 6  X# y% Y, ]' j8 a( V' n8 }" i+ E
__ctype_get_mb_cur_max()                                               = 6
- ?3 Q, x' w4 D% F$ p* c: V( |) Lstrlen("Downloads")                                                    = 92 n7 t: g9 q, ^5 ^
fwrite_unlocked("Downloads", 1, 9, 0x7f3801f3f760)                     = 98 \+ A2 G, U8 I
__overflow(0x7f3801f3f760, 32, 1, 8)                                   = 32
# P: R$ l7 A& n& n& z) a2 `% D& [__overflow(0x7f3801f3f760, 32, 2, 8)                                   = 32  N, e" ^' ?7 z. I; J& n6 M; f
strlen("examples.desktop")                                             = 16, S1 E5 r. k2 T, v# y- h3 _3 Z
__ctype_get_mb_cur_max()                                               = 6, R$ E6 D4 g8 R1 u$ e9 e
__ctype_get_mb_cur_max()                                               = 67 l8 c; Q$ E" S3 {; J# T5 B
strlen("examples.desktop")                                             = 16
# \: X. G) t+ P  Y' K4 Gfwrite_unlocked("examples.desktop", 1, 16, 0x7f3801f3f760)             = 16$ B# Q* f$ Q- m% T3 a9 L+ c+ k  A( B
__overflow(0x7f3801f3f760, 32, 3, 8)                                   = 32& W1 E% j2 }& N: R- `% t+ N
__overflow(0x7f3801f3f760, 32, 4, 8)                                   = 32
, P8 ^! ?6 S# ~/ Z. m( {5 \strlen("Music")                                                        = 5
( y' ]0 ]9 b) ^2 ?6 B- L2 R__ctype_get_mb_cur_max()                                               = 6
* a9 n# |' ~0 i6 V$ P6 J  G__ctype_get_mb_cur_max()                                               = 6  x( C: Q6 \7 I4 Q& P5 |$ A+ `
strlen("Music")                                                        = 5$ m! n& [7 P$ q4 N
fwrite_unlocked("Music", 1, 5, 0x7f3801f3f760)                         = 5- R! w7 I3 A& v- D- Q( G
__overflow(0x7f3801f3f760, 32, 2, 8)                                   = 32
8 y3 S$ i/ U. Y9 U3 o__overflow(0x7f3801f3f760, 32, 3, 8)                                   = 32" F1 {/ \  m( i1 z( j
strlen("Pictures")                                                     = 8
. l; g: Q+ v- V8 D! C2 e! O+ c__ctype_get_mb_cur_max()                                               = 6' l* o$ p3 I. E& |7 ]9 v+ A% H
__ctype_get_mb_cur_max()                                               = 6
0 s% u4 ~5 @* a/ `5 sstrlen("Pictures")                                                     = 8
# @$ e( H* S8 h' B/ Efwrite_unlocked("Pictures", 1, 8, 0x7f3801f3f760)                      = 80 B  P/ t# t) i8 j# ?
__overflow(0x7f3801f3f760, 32, 4, 8)                                   = 32& I0 S. }) \  o/ E- `# ~4 A5 I
__overflow(0x7f3801f3f760, 32, 5, 8)                                   = 32% M+ E. b# r5 n$ u$ ]
strlen("Public")                                                       = 6
7 E+ l5 h( j2 i& [5 ^7 L__ctype_get_mb_cur_max()                                               = 6, |/ Q/ ^9 R$ N) p$ F2 u" ?
__ctype_get_mb_cur_max()                                               = 6  s8 C3 q" ^3 s: I3 ^
strlen("Public")                                                       = 6: U% j& B* W. n  ]8 a  X/ d
fwrite_unlocked("Public", 1, 6, 0x7f3801f3f760)                        = 6% B8 S6 c1 B! W$ t3 |6 B: Q7 q0 n0 i* ]
__overflow(0x7f3801f3f760, 32, 4, 8)                                   = 32
4 n+ s7 y; y- K( D1 e2 N1 k" j3 d__overflow(0x7f3801f3f760, 32, 5, 8)                                   = 322 s1 ^, K, Z3 A) Y* {
strlen("Templates")                                                    = 9& z* Z1 k/ A9 ]" B3 I; C7 G
__ctype_get_mb_cur_max()                                               = 6, a% N' C+ {; p2 p  T
__ctype_get_mb_cur_max()                                               = 6( @, u1 Q' M9 M* a
strlen("Templates")                                                    = 9
2 L( r: V3 ~1 Y2 D0 y" {! w, mfwrite_unlocked("Templates", 1, 9, 0x7f3801f3f760)                     = 9$ n+ M1 m  z  x4 m$ ~, A7 @$ u
__overflow(0x7f3801f3f760, 9, 7, 8)                                    = 92 O* G' T# ~/ b' P$ e
strlen("Videos")                                                       = 6
4 J4 M/ u6 f2 S/ ~' o__ctype_get_mb_cur_max()                                               = 6
& L! Q/ s  v! g, a  H__ctype_get_mb_cur_max()                                               = 6
4 ~& {( g- i; L+ h9 M* Kstrlen("Videos")                                                       = 6
  j5 p! f  \# Zfwrite_unlocked("Videos", 1, 6, 0x7f3801f3f760)                        = 6+ J% `* B: y* A- a+ N
__overflow(0x7f3801f3f760, 10, 0x1d15f2f23c04cf00, 0x736f6564c  Desktop  Documents  Downloads  examples.desktop  Music  Pictures  Public  Templates Videos
* \$ D0 E& m+ C7 P1 R* Y6 [)         = 108 l* v( P; Y9 `& U0 h8 h! Z
__fpending(0x7f3801f3f760, 0, 0x5594e2fd9ca0, 1)                       = 0
2 ]/ M, y. T% K% b0 B9 z# ifileno(0x7f3801f3f760)                                                 = 1, \" Y* d' C  N& x2 {- u3 W' q9 g0 S
__freading(0x7f3801f3f760, 0, 0x5594e2fd9ca0, 1)                       = 08 ?$ R; ^& {. M2 i( F* V
__freading(0x7f3801f3f760, 0, 2052, 1)                                 = 0, D% C! X* T- B- M$ w% `
fflush(0x7f3801f3f760)                                                 = 0
% H$ |/ q0 y1 F* p) `' l# vfclose(0x7f3801f3f760)                                                 = 0
# B( ~) o$ L4 k5 \__fpending(0x7f3801f3f680, 0, 0x7f3801f3f960, 3072)                    = 0
5 G" D6 ^2 v4 ^: D6 ^% i! }# y  S7 j# Lfileno(0x7f3801f3f680)                                                 = 2
, ^, K# O; ^1 ~2 P3 e  R% h( W( N__freading(0x7f3801f3f680, 0, 0x7f3801f3f960, 3072)                    = 0
- f8 ?6 u# X- J  @3 L# E__freading(0x7f3801f3f680, 0, 4, 3072)                                 = 0" K) ?9 c+ c! p. q
fflush(0x7f3801f3f680)                                                 = 01 _( D" z+ g3 x+ k5 Y; m
fclose(0x7f3801f3f680)                                                 = 0/ C  @+ a2 Y- y3 M+ X+ r
+++ exited (status 0) +++3 n) F: N) ?, s
weiqifa0@weiqifa-System-Product-Name:~$

; j+ T8 Z8 X9 a; a* f# c6 |#hexdump

从名字可以看出这个是用来查看文件的十六进制的。

weiqifa0@weiqifa-System-Product-Name:~$ hexdump /bin/ls  |head
3 h" c% s$ O% ~9 k. A( U+ U0000000 457f 464c 0102 0001 0000 0000 0000 0000) z" S0 Z  `% q; G7 S- J) k  K, Y
0000010 0003 003e 0001 0000 5850 0000 0000 0000
1 h; X9 q( z8 p3 y$ \5 Y5 N! [0000020 0040 0000 0000 0000 03a0 0002 0000 00006 O" T! x+ n5 ?- h( L% ^9 J: ?
0000030 0000 0000 0040 0038 0009 0040 001c 001b
7 O! e  w- x8 P2 I5 o, z# ]0000040 0006 0000 0005 0000 0040 0000 0000 0000
# o3 ?, k$ L9 t1 Z8 g% \0000050 0040 0000 0000 0000 0040 0000 0000 0000
$ J( N+ \4 x( G  e5 q0000060 01f8 0000 0000 0000 01f8 0000 0000 0000; w. G! g, \9 x- t% F
0000070 0008 0000 0000 0000 0003 0000 0004 0000) ~  k/ w+ s8 d" ~
0000080 0238 0000 0000 0000 0238 0000 0000 0000
3 l; f: D" _* b" a0000090 0238 0000 0000 0000 001c 0000 0000 0000; E& u; ^2 l# \* J  M) k
weiqifa0@weiqifa-System-Product-Name:~$

% J& _# g" [( e, w$ X#strings

这个之前在文件dts解析里面有说过,是一个非常不错的命令,用来查看Bin里面有什么字符串。

微信图片_20200514134317.png

#readelf

一般用于查看ELF格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(* .so)或者静态库(* .a) 等包含ELF格式的文件。以下命令的使用是基于android编译出来的so文件上面去运行。

微信图片_20200514134320.png

#objdump

这个命令主要用来反汇编格式。

weiqifa0@weiqifa-System-Product-Name:~/c$ cat 1.c" v$ X  |1 K  k$ X( q7 |, @
#include "stdio.h"' Y, e" h/ J4 n
0 ]; C1 W& a) F% ]
int main(void)
( u: Y* D7 I3 d, t! D. ?* w$ T{/ A5 p( G6 w8 ]- [+ N; K0 N5 F* }
    printf("hello,world\n");7 ?! I! L* P: U* X2 w
    return (0);
# [! _  z$ _# g}% f5 r+ F4 f$ t, V" W& {1 `! W% @
weiqifa0@weiqifa-System-Product-Name:~/c$ gcc 1.c -o 1.o) J( _& N: ^* H$ X' D
weiqifa0@weiqifa-System-Product-Name:~/c$ objdump -h 1.o
8 j) c. K1 U3 l9 K: e* U
' O: I8 g/ u+ U2 r1.o:     file format elf64-x86-64
9 z. K9 i" I$ Z# k. ~8 M/ H: I+ I. J+ N4 e. Y2 u
Sections:4 A/ n  T0 j4 e6 r# R" _
Idx Name          Size      VMA               LMA               File off  Algn
' H3 R5 R' [3 W3 E  0 .interp       0000001c  00000000000002a8  00000000000002a8  000002a8  2**0
$ Q1 t! `. ?6 }# X2 w) B                  CONTENTS, ALLOC, LOAD, READONLY, DATA
% B2 m& `' e- s. m! }0 F& {! i% O# z  1 .note.gnu.build-id 00000024  00000000000002c4  00000000000002c4  000002c4  2**2
$ E) I( R5 e9 z                  CONTENTS, ALLOC, LOAD, READONLY, DATA/ ?7 |$ R$ w7 h
  2 .note.ABI-tag 00000020  00000000000002e8  00000000000002e8  000002e8  2**2
: a, C8 R! q4 P0 d6 Q7 m                  CONTENTS, ALLOC, LOAD, READONLY, DATA. X$ `  {- _4 X3 @) D: W3 N2 t  V
  3 .gnu.hash     00000024  0000000000000308  0000000000000308  00000308  2**3" T( U- t& s% l2 V
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
: r% j) X" W, S4 |  4 .dynsym       000000a8  0000000000000330  0000000000000330  00000330  2**3; H; J1 p! X* G/ ~9 S" c
                  CONTENTS, ALLOC, LOAD, READONLY, DATA. d$ s6 }1 }7 p
  5 .dynstr       00000082  00000000000003d8  00000000000003d8  000003d8  2**0
' k) N9 G2 s2 F* [/ y& q                  CONTENTS, ALLOC, LOAD, READONLY, DATA
9 A* C' h3 d4 }4 \# l# B  6 .gnu.version  0000000e  000000000000045a  000000000000045a  0000045a  2**1( Z& h! g" O4 W5 o# D
                  CONTENTS, ALLOC, LOAD, READONLY, DATA; L: D: \& w" I$ Z
  7 .gnu.version_r 00000020  0000000000000468  0000000000000468  00000468  2**3
/ {% j3 f* E- M) R' C$ o2 q9 G                  CONTENTS, ALLOC, LOAD, READONLY, DATA
: O: o3 [8 k2 L# m  8 .rela.dyn     000000c0  0000000000000488  0000000000000488  00000488  2**39 O/ ?6 N: [  r4 X" V7 J$ ~
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
0 J9 O  b* s8 t3 ]  9 .rela.plt     00000018  0000000000000548  0000000000000548  00000548  2**36 L1 a! {% }" D, d5 w6 K; {7 i6 Y+ c9 k3 G1 Y
                  CONTENTS, ALLOC, LOAD, READONLY, DATA0 V# D$ k0 H, I8 B! `
10 .init         00000017  0000000000001000  0000000000001000  00001000  2**2
: }5 T& }& S! P8 n9 k                  CONTENTS, ALLOC, LOAD, READONLY, CODE
+ C% e& l' C1 @ 11 .plt          00000020  0000000000001020  0000000000001020  00001020  2**46 ?! _% I' b  q$ d" g% K
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
7 `3 A" P1 H! ?6 R7 _ 12 .plt.got      00000008  0000000000001040  0000000000001040  00001040  2**3! \( ^2 c9 I- y
                  CONTENTS, ALLOC, LOAD, READONLY, CODE9 C9 n# _, G, e; J6 x- m; f; O& T! U
13 .text         00000161  0000000000001050  0000000000001050  00001050  2**45 J6 I4 R5 e# _: O
                  CONTENTS, ALLOC, LOAD, READONLY, CODE; i" Y6 f( y# c( r
14 .fini         00000009  00000000000011b4  00000000000011b4  000011b4  2**2
& H6 a; f5 J' I. Y9 Z9 R* a) g                  CONTENTS, ALLOC, LOAD, READONLY, CODE  }+ u# c, N  F: z2 r
15 .rodata       00000010  0000000000002000  0000000000002000  00002000  2**2
+ _4 C& M; h8 D: J5 `( Q6 Z                  CONTENTS, ALLOC, LOAD, READONLY, DATA$ ~. Y2 }; T) z; Z2 A* H
16 .eh_frame_hdr 0000003c  0000000000002010  0000000000002010  00002010  2**2
. ]; o$ O& k- t                  CONTENTS, ALLOC, LOAD, READONLY, DATA( n- Q  |1 G) |. k4 m5 P5 \
17 .eh_frame     00000108  0000000000002050  0000000000002050  00002050  2**3
. m% I. E- X% A. _% s2 V/ f! k8 r( T                  CONTENTS, ALLOC, LOAD, READONLY, DATA
: Y1 U  y: @, e9 }$ E* r 18 .init_array   00000008  0000000000003db8  0000000000003db8  00002db8  2**3
+ ?# R% B9 Y- I. G                  CONTENTS, ALLOC, LOAD, DATA
, W4 p# p  B* l/ V4 A8 K 19 .fini_array   00000008  0000000000003dc0  0000000000003dc0  00002dc0  2**3
. D7 J. [7 z. H% E+ U3 O8 M6 u/ v                  CONTENTS, ALLOC, LOAD, DATA
2 @3 r+ C8 \. `8 V5 @ 20 .dynamic      000001f0  0000000000003dc8  0000000000003dc8  00002dc8  2**36 V, n+ E6 K* j3 X- z8 V
                  CONTENTS, ALLOC, LOAD, DATA
+ p- q( C3 F# g* |6 q 21 .got          00000048  0000000000003fb8  0000000000003fb8  00002fb8  2**3
' X3 P4 @6 ^6 n6 L# G1 e: t! P                  CONTENTS, ALLOC, LOAD, DATA/ i, X2 T, i- r. \, N7 W( f
22 .data         00000010  0000000000004000  0000000000004000  00003000  2**3) Q) Z3 d- m8 M- m, F
                  CONTENTS, ALLOC, LOAD, DATA
6 Z/ W8 i7 y: ~. g% q 23 .bss          00000008  0000000000004010  0000000000004010  00003010  2**0
. }/ a3 f) y) V, V4 |                  ALLOC& D4 J3 D6 H1 l; N
24 .comment      00000023  0000000000000000  0000000000000000  00003010  2**05 y. A! D( a9 x
                  CONTENTS, READONLY$ v) @% F# Y) v
weiqifa0@weiqifa-System-Product-Name:~/c$
3 S$ O  z1 F) w, r1 n5 `6 }
#strace

strace是一个非常简单的工具,它可以跟踪系统调用的执行。最简单的方式,它可以从头到尾跟踪binary的执行,然后以一行文本输出系统调用的名字,参数和返回值。

详细链接:

4 a* b+ h0 I  Z- V( U; H0 u; V

http://blog.csdn.net/uisoul/article/details/83143290

weiqifa0@weiqifa-System-Product-Name:~/c$ strace /bin/ls
0 t, T0 Z. M: q5 K) @& ~1 n3 ~" R& nexecve("/bin/ls", ["/bin/ls"], 0x7ffdb4868620 /* 23 vars */) = 0
+ v# X; o- a3 x0 n/ Jbrk(NULL)                               = 0x55ebe6544000
( q, }4 L2 j5 }0 E) O! a+ x2 W# saccess("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)2 y2 C# R- r8 Y
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 39 j( B8 g, p4 h0 z0 l/ z' f: R
fstat(3, {st_mode=S_IFREG|0644, st_size=109714, ...}) = 0
4 h; {' U9 D& Q5 Gmmap(NULL, 109714, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc672283000
$ a- i$ t# \. g$ y/ Dclose(3)                                = 0
6 v6 v6 V- ^; Topenat(AT_FDCWD, "/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3. e& Q. [$ k. ?8 r0 C2 A/ }
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 h\0\0\0\0\0\0"..., 832) = 832
& t$ M* V8 x$ ~8 Tfstat(3, {st_mode=S_IFREG|0644, st_size=158928, ...}) = 0. o+ }( e# Q9 N5 {1 U8 j- ?
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc672281000) N! g1 Z3 q0 R# D
mmap(NULL, 170192, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc672257000
. \7 h/ q$ D; J" m3 q0 Omprotect(0x7fc67225d000, 131072, PROT_NONE) = 0
* x! s/ b! F5 d6 {; @* p% Y8 zmmap(0x7fc67225d000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fc67225d000
. U  D+ u9 F' w$ O# H) S( ymmap(0x7fc672275000, 28672, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e000) = 0x7fc672275000
' J6 ?- j# g4 a! t1 ?mmap(0x7fc67227d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fc67227d000
0 V5 t+ N& G. ~* Vmmap(0x7fc67227f000, 6352, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc67227f000
% Y& O, q& @! D: d5 y  bclose(3)                                = 09 D: A8 |9 i' f
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 30 `# T- h7 D, P6 q2 r
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200l\2\0\0\0\0\0"..., 832) = 832
, j% l" Q- h% Z2 T  ?7 B$ Pfstat(3, {st_mode=S_IFREG|0755, st_size=2000480, ...}) = 0' f: T8 ?' A3 g, s; `
mmap(NULL, 2008696, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc67206c0005 O# ^7 P. n3 l1 E/ k
mmap(0x7fc672091000, 1519616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fc672091000
3 Q. t$ z. t% D0 N; immap(0x7fc672204000, 299008, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x198000) = 0x7fc6722040008 V. R! j0 m/ d+ v
mmap(0x7fc67224d000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e0000) = 0x7fc67224d000
+ B% H: {4 o+ {* _# C% Nmmap(0x7fc672253000, 13944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc672253000
: C% T; }, q6 N! p0 jclose(3)                                = 0
, X7 T5 u: `, V# P8 P$ t+ u8 hopenat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 3, X6 Z' M/ s5 T7 B- q' u0 U. d
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \25\0\0\0\0\0\0"..., 832) = 832& M3 r  u! c; {( y$ t, P
fstat(3, {st_mode=S_IFREG|0644, st_size=464824, ...}) = 0) b2 l, Q( H5 n5 E( k1 I
mmap(NULL, 2560264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc671dfa000* `$ i$ {5 [% ^5 N+ {
mprotect(0x7fc671e6a000, 2097152, PROT_NONE) = 08 o; g5 {' r( _8 V1 J1 i+ L* K
mmap(0x7fc67206a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x70000) = 0x7fc67206a000
% M7 `  u# J# K+ I5 a1 n# b. K* kclose(3)                                = 0" M* R& ^( ]( G( K* H
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
- a0 B. _5 N5 \* I" G% H& jread(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\21\0\0\0\0\0\0"..., 832) = 832
2 o$ G) B6 |4 F0 d! D+ K: pfstat(3, {st_mode=S_IFREG|0644, st_size=18656, ...}) = 0
0 L! W. f) E- R+ t# H- N9 Nmmap(NULL, 20752, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc671df4000: g% J4 j# S1 h
mmap(0x7fc671df5000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7fc671df5000( l3 B" U* O0 v+ ~
mmap(0x7fc671df7000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fc671df7000
6 {& W5 C% ^/ m* ?: {! Tmmap(0x7fc671df8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fc671df8000
( c) e2 b# F8 p% Pclose(3)                                = 0
- R! R& I1 D7 J7 E& m3 b4 U+ mopenat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
. B9 [* o: C$ ~* d- P4 Sread(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200|\0\0\0\0\0\0"..., 832) = 832
7 [. {  {& b- {7 W6 G$ Ufstat(3, {st_mode=S_IFREG|0755, st_size=149840, ...}) = 0
" q# z. ^% m& G+ m+ @8 U7 Ommap(NULL, 132288, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc671dd3000
2 D& B( v; A* Vmmap(0x7fc671dda000, 61440, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fc671dda000; B6 M! v4 H- r
mmap(0x7fc671de9000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7fc671de9000- o( J; W4 t" g: F: N
mmap(0x7fc671dee000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7fc671dee0006 W1 e0 F5 f9 `1 C1 x0 r
mmap(0x7fc671df0000, 13504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc671df0000+ g7 C7 c3 m/ Y! z' E
close(3)                                = 0. s: }$ e! F; y
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc671dd10001 p8 F# x; Q! J4 b6 _! R  ]0 ?$ x; |
arch_prctl(ARCH_SET_FS, 0x7fc671dd23c0) = 0; S* I! n/ u( _# c5 ]- V& x3 \: k: `
mprotect(0x7fc67224d000, 12288, PROT_READ) = 0
5 D- \5 O* t+ ]3 V& ~mprotect(0x7fc671dee000, 4096, PROT_READ) = 0# E; ]1 I6 B+ A5 u; e3 U; F# L: ?' w
mprotect(0x7fc671df8000, 4096, PROT_READ) = 05 v- n" H( T2 E% L- Z, K# P6 C9 O0 t; l
mprotect(0x7fc67206a000, 4096, PROT_READ) = 0
6 i* Q7 s- q6 ]. v. tmprotect(0x7fc67227d000, 4096, PROT_READ) = 0  J9 C) {$ n5 v" m% R( i
mprotect(0x55ebe4612000, 8192, PROT_READ) = 0
" K/ O: m; o" A9 p* tmprotect(0x7fc6722c8000, 4096, PROT_READ) = 0# c" E5 {2 B, |4 x' @- h
munmap(0x7fc672283000, 109714)          = 06 Y' O) N1 u9 z" N! A  n  r' D: M8 ^
set_tid_address(0x7fc671dd2690)         = 15038) w1 K8 G9 K- a
set_robust_list(0x7fc671dd26a0, 24)     = 06 }! r: t0 J* @2 y$ ^" Q
rt_sigaction(SIGRTMIN, {sa_handler=0x7fc671dda6c0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7fc671de6f40}, NULL, 8) = 09 Y& Z$ V* d$ a% O# w$ C
rt_sigaction(SIGRT_1, {sa_handler=0x7fc671dda760, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fc671de6f40}, NULL, 8) = 02 K. i$ d/ ?5 c. d1 c
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
" S: H7 z# N' F2 {0 `prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
- s# K9 @! _" {+ V; y' nstatfs("/sys/fs/selinux", 0x7ffdfa4ebb30) = -1 ENOENT (No such file or directory)5 n/ l, ]  z1 S" x; R* U
statfs("/selinux", 0x7ffdfa4ebb30)      = -1 ENOENT (No such file or directory)/ r. H. M5 ~) Z1 \
brk(NULL)                               = 0x55ebe65440007 F0 I% k% u, u# W& c4 Z
brk(0x55ebe6565000)                     = 0x55ebe6565000# e3 Q  ~# S. a
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 38 @5 r0 Z; J! k5 Q/ X' B1 G
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
. E" q# u- a+ eread(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 423# [! S4 v7 }% c2 b
read(3, "", 1024)                       = 0
& o$ B' r, v* C4 n+ Q: aclose(3)                                = 0
5 ]; j( T0 C( l/ h4 s' a8 Uaccess("/etc/selinux/config", F_OK)     = -1 ENOENT (No such file or directory)% ~6 |7 V6 `; i. t, o
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
. X8 }9 U7 Y) ], Z1 ~; P. z8 Qfstat(3, {st_mode=S_IFREG|0644, st_size=8841488, ...}) = 0
3 l4 y+ q2 ?- ]! r' R* q/ N; e: Mmmap(NULL, 8841488, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc671562000+ A7 m: n4 |' ^5 {) g- S+ C* M0 V) ~7 f
close(3)                                = 0$ U  g! z! Q5 t3 Q
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
5 n1 U& S# x, ~1 n( lioctl(1, TIOCGWINSZ, {ws_row=27, ws_col=116, ws_xpixel=0, ws_ypixel=0}) = 0
9 P  e; {! Y. dopenat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 36 S7 N% U% H; X, G$ s5 e
fstat(3, {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
" @* P% `0 t; V, @, sgetdents64(3, /* 4 entries */, 32768)   = 96
5 H# F% V: G; U' B6 Q7 h! Tgetdents64(3, /* 0 entries */, 32768)   = 0
/ J: L' L8 d8 |9 |! j6 Iclose(3)                                = 0
5 c6 q7 G4 J8 L- R5 |% sfstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0, _; p2 s8 H( N. I7 ?
write(1, "1.c  1.o\n", 91.c  1.o
" \  [0 g( |9 `/ U)               = 9
+ I- u. K: s, c1 Uclose(1)                                = 0' q8 A, }: d, p- n
close(2)                                = 0' b; j/ J, C5 A# g6 _3 s) x0 I
exit_group(0)                           = ?- C4 ^+ A: ^0 w! E+ E% }6 T( Z' x+ @
+++ exited with 0 +++) E% ?4 S- G- G! k
weiqifa0@weiqifa-System-Product-Name:~/c$
#nm

这个命令可以看到链接库的地址,实际使用的时候会发现非常爽。

weiqifa0@weiqifa-System-Product-Name:~/c$ cat 1.c: x) A: h; X+ |( b! @" y2 v! d1 C( z
#include "stdio.h"
; \/ n" k  s9 t0 O' [+ P, i! z& f3 w8 @
* x/ G# d+ J+ |2 n: sint main(void)2 y4 T) a: |5 h9 L' G; v* s1 a2 ]
{
$ T/ L2 f. c/ s4 f" \    printf("hello,world\n");# v8 V& w  g; t4 R! Z
    return (0);
( ^) t5 l9 X! b" H2 g- @}
. e* D3 v- Y5 ]8 m) aweiqifa0@weiqifa-System-Product-Name:~/c$ gcc 1.c  -o 1.o
2 Y# ]- v) A5 K& A/ f6 q& Eweiqifa0@weiqifa-System-Product-Name:~/c$ nm 1.o
4 p2 E, W& w5 N" X0 K5 v0000000000004010 B __bss_start5 S- s: F! |9 e, D" D4 q, I. d6 v
0000000000004010 b completed.7963
- m$ X: {  q" w* @& Q+ F                 w __cxa_finalize@@GLIBC_2.2.5& V  [. X0 }  A( c+ T& |
0000000000004000 D __data_start
2 _  H1 ^. C3 w; X0000000000004000 W data_start
* S  e( ~, {1 H1 q+ E" V/ e& x0 l0000000000001080 t deregister_tm_clones# |  N: X6 }: G* _& h
00000000000010f0 t __do_global_dtors_aux
5 U  r7 z+ t  i' U2 i0000000000003dc0 t __do_global_dtors_aux_fini_array_entry) R3 J. O3 w. N- [0 D: z
0000000000004008 D __dso_handle
8 |5 S. ]& O4 W) H5 b* K0000000000003dc8 d _DYNAMIC" r- K7 \, U3 Q  S+ w: U+ B; U
0000000000004010 D _edata9 _+ _! X6 n$ Q9 j" j3 w5 b- y
0000000000004018 B _end8 ^/ {- }0 ^/ n; ^& K7 i
00000000000011b4 T _fini
0 c, b; n3 r7 I) {( o0000000000001130 t frame_dummy
7 ^/ g) [' c) P% c5 t0000000000003db8 t __frame_dummy_init_array_entry
" Q3 H& o, g+ Y7 p* s/ P( o/ I0000000000002154 r __FRAME_END__; a! g# w$ ~1 j, O
0000000000003fb8 d _GLOBAL_OFFSET_TABLE_$ R# p5 R) n9 p1 \1 y- q" m! s8 [1 k
                 w __gmon_start__  y# w- L, n7 i, q+ C- A  e( \
0000000000002010 r __GNU_EH_FRAME_HDR
2 X) G' r* P2 J7 J; ~4 Y0000000000001000 t _init4 A5 P- o" i+ k, L. }; G" v% w7 f
0000000000003dc0 t __init_array_end5 ~1 _, A1 N$ d4 P; h
0000000000003db8 t __init_array_start: S1 E7 u1 H* z; E1 I! f  m
0000000000002000 R _IO_stdin_used
: e) p! I* m3 t& m% i' }# _. q% ^                 w _ITM_deregisterTMCloneTable$ s9 Q4 v5 P6 C* Y8 S  Q6 e2 ^
                 w _ITM_registerTMCloneTable
6 h+ y+ a( h# n0 p/ Y& I0 O4 y( O" h00000000000011b0 T __libc_csu_fini
2 V7 v0 ^% B. [# H: `% d# f0000000000001150 T __libc_csu_init
2 x0 j/ r- l, e7 x4 V                 U __libc_start_main@@GLIBC_2.2.5
5 J( g0 x0 L  C0 E* Z0000000000001135 T main
0 H$ b* ^7 G$ O/ |- p+ {# ?: A                 U puts@@GLIBC_2.2.5
6 ]5 O1 U, A2 Z' K00000000000010b0 t register_tm_clones- f- N; C8 I) U( f
0000000000001050 T _start
' B! |# K6 A/ m0000000000004010 D __TMC_END__; l: g1 l; N% }5 T  I
weiqifa0@weiqifa-System-Product-Name:~/c$

* [5 N1 d$ ?: k3 u#gdb

gdb我觉得大家应该不会陌生了吧,可以说是Linux下的调试神器了。

weiqifa0@weiqifa-System-Product-Name:~/c$ gcc -c -g 1.c. o" G0 D, ]8 S6 U" o
weiqifa0@weiqifa-System-Product-Name:~/c$ ls- ?" B& P4 L$ \, V
1.c  1.o  -g9 ^# H# J+ v" m5 J' m
weiqifa0@weiqifa-System-Product-Name:~/c$ gcc 1.o -o 1# I9 D0 s! M5 Q  ^* }
weiqifa0@weiqifa-System-Product-Name:~/c$ gdb 16 O) M4 s8 _" @4 D& s& u7 Q
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git) ^5 c- f- O) Q# l- v) V& p. s5 g
Copyright (C) 2018 Free Software Foundation, Inc.
) u5 E! c* s: a( z6 U3 U7 B' bLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>) q: Q( W7 l/ \9 `
This is free software: you are free to change and redistribute it.
1 r/ X- J1 X1 W8 G( qThere is NO WARRANTY, to the extent permitted by law.  Type "show copying"
, s1 ]$ D3 k5 k  W: m8 Q  f/ l& v* @and "show warranty" for details.* ?) }2 j- D4 ]
This GDB was configured as "x86_64-linux-gnu"." ~: p* W1 }# G
Type "show configuration" for configuration details.. |1 ]2 Q7 C: _- a& |8 h/ J# n& H/ Q
For bug reporting instructions, please see:
$ z3 N. F0 U, N8 [<http://www.gnu.org/software/gdb/bugs/>.0 }/ ~; s6 g. [! {: R8 G
Find the GDB manual and other documentation resources online at:# {# X6 Z% P1 Y$ T; {
<http://www.gnu.org/software/gdb/documentation/>.  o! ]! D# R+ a0 G$ p2 U9 F
For help, type "help".2 H/ Z) s' O6 D6 N
Type "apropos word" to search for commands related to "word"...6 o, V9 A  G1 Q% P6 J
Reading symbols from 1...done.0 J7 Z( B3 y1 ^
(gdb) list1 E/ _" `; X0 X
1       #include "stdio.h": U) j( I, I2 p
2  K* P0 p: M" X% @; Z5 v. N4 U# y
3       int main(void); u3 [/ O+ }. t- I: f
4       {+ ]' |% u& t4 X( g3 d" ^: F
5           printf("hello,world\n");
9 E& h" q4 ^- J- N% D4 G6           return (0);
. M% R/ h7 T6 J$ N9 {8 q0 B2 X7       }
: a3 k: M' M. u/ H(gdb) b main' r7 Z- l5 N8 ?2 k7 j( l" f* P
Breakpoint 1 at 0x1139: file 1.c, line 5.
( z) f: S. j8 p2 A  Z(gdb) run/ i: \9 q' Y2 b; J/ D
Starting program: /home/weiqifa0/c/1& r6 f* E1 b; d. T% L; B  M

: Q9 w) m5 u2 }4 V7 W  vBreakpoint 1, main () at 1.c:5
' h6 g1 ^- c6 X2 E5           printf("hello,world\n");% ~$ Y. u3 ^- ^2 p
(gdb)

% Y( P7 O- H: M+ R& n. P" h

使用详情:

http://www.cnblogs.com/arnoldlu/p/9633254.html


2 Y  l1 p5 S" m' [' H, k7 {
赞 收藏 1 评论3 发布时间:2020-5-14 13:48

举报

3个回答
李康1202 回答时间:2020-5-14 15:07:43
抢沙发
慎微 回答时间:2020-5-14 17:49:01
认真学习
james816 回答时间:2020-5-24 11:02:08
kan kan!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版