我們在發展程式的過程中,難免會遇到資料處理的流程,在資料處理的流程中,也許我們需要進行資料正確與否的驗証,驗証的方法當然很多,其中我們可以將記憶體中的資料抓出來,再進行比對,在Linux環境中,可以使用下列的方式進行Binary File的比對:
hexdump -C file1 > file1.txt
hexdump -C file2 > file2.txt
diff file1.txt file2.txt -y |less
2009年11月6日 星期五
2009年11月3日 星期二
如何了解執行程式使用了哪些Shared Library
一般使用者如果想了解執行程式是Static?還是Dynamic Linking,只要使用file指令即可達到此目的,如:
$ file gdb
gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, statically linked, not stripped
$file gdb
gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
但如果您想要知道執行程式使用了哪些Shared Library,就需要使用ldd指令,如:
$ ldd gdb
not a dynamic executable
$ ldd gdb
libncurses.so.5 => /usr/lib/libncurses.so.5 (0x002c9000)
libm.so.6 => /lib/tls/libm.so.6 (0x005fd000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x007e6000)
libc.so.6 => /lib/tls/libc.so.6 (0x004cf000)
/lib/ld-linux.so.2 (0x004b0000)
$ file gdb
gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, statically linked, not stripped
$file gdb
gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
但如果您想要知道執行程式使用了哪些Shared Library,就需要使用ldd指令,如:
$ ldd gdb
not a dynamic executable
$ ldd gdb
libncurses.so.5 => /usr/lib/libncurses.so.5 (0x002c9000)
libm.so.6 => /lib/tls/libm.so.6 (0x005fd000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x007e6000)
libc.so.6 => /lib/tls/libc.so.6 (0x004cf000)
/lib/ld-linux.so.2 (0x004b0000)
訂閱:
文章 (Atom)