linux下pin工具,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能提供的功能都有了一些基本了解,我觉得我可以看论文了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值