pin pintool功能介紹補充及在linux下調試程序

繼續介紹pin未介紹的功能,包括在linux下的特殊功能:

功能介紹續:

1、在windows下通過名稱查找函數:w_malloctrace查找RtlAllocateHeap(改函數從堆分配一個內存塊)函數,並返回其輸入參數和輸出,替換RtlAllocateHeap即可對其他函數進行監測。

2、監測多線程程序: pintool中使用用ThreadStart()和ThreadFini()函數可以對對多線程函數進行監測


3、對緩存區的數據進行處理:pin提供了一個針對緩存區的應用程序接口 Faster Buffering APIs,如果有參數是存在緩存區的,可以用                                                         其進行處理

4、靜態監測:pin提供了靜態監測工具,可以對程序進行靜態監測,如staticcount。


5、將pin從應用程序中分離:pintool使用PIN_Detach函數可以使pin放棄對程序的控制。


6、對子進程進行監測:pin提供的Pin_AddFollowChildProcessFunction()可以定義一個在程序


調試在pin中運行的程序:

在linux環境下使用gdb


將目錄更改爲pintool所在目錄,用管理員權限啓動gdb:sudo gdb,否則會不能連接,用gdb調試的時候,不能使用"run"命令,使用run命令會使gdb回到原程序進行調試,得不到pintool的數據。

在另一個窗口中啓動pin,這時需要加入命令行參數 pause_tool  n,n爲數字表示暫停n秒,

運行:

lovesunshine@ubuntu:~/pin$ pin -injection child -pause_tool 10 -t /home/lovesunshine/pin/source/tools/ManualExamples/obj-ia32/itrace.so -- /home/lovesunshine/sample/gdb_sample

顯示:


Pausing to attach to pid 3137
To load the tool's debug info to gdb use:
   add-symbol-file /home/lovesunshine/pin/source/tools/ManualExamples/obj-ia32/itrace.so 0xb712ffe0 -s .data 0xb7458240 -s .bss 0xb7458cc0

這時在gdb窗口中輸入:
attach 3137
運行後:
Attaching to process 3137
Reading symbols from /home/lovesunshine/sample/gdb_sample...done.
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
0xb779c424 in __kernel_vsyscall ()
再將pin窗口的命令複製到gdb窗口:

add-symbol-file /home/lovesunshine/pin/source/tools/ManualExamples/obj-ia32/itrace.so 0xb712ffe0 -s .data 0xb7458240 -s .bss 0xb7458cc0

運行:
add symbol table from file "/home/lovesunshine/pin/source/tools/ManualExamples/obj-ia32/itrace.so" at
.text_addr = 0xb712ffe0
.data_addr = 0xb7458240
.bss_addr = 0xb7458cc0
(y or n) y
Reading symbols from /home/lovesunshine/pin/source/tools/ManualExamples/obj-ia32/itrace.so...(no debugging symbols found)...done.
若要推出,在gdb窗口中輸入detach

windows下用visual studio調試:pin的輸入不變,然後啓用vs的Debug ->Attach to Process菜單選項

到這裏對pin能提供的功能都有了一些基本瞭解,我覺得我可以看論文了




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章