关于Intel pin的学习笔记(一)——KNOB< TYPE>构造函数的解释

关于KnobOutputFile()函数的解释

对于KnobOutputFile()这个函数我在网上很少能找到对他的详细解释,今天好好的研究了一下,顺便记录下来。
首先对这个函数的第一映像是,为啥文件的创建要用这么个鬼东西。如果我们回顾一下如何声明文件名变量KnobOutputFile,也会觉得我们为什么要为这种情况创建这么复杂的东西很奇怪。KnobOutputFile是一个在Intel pin内定义的类型选择器,用于自动解析和管理命令行开关。我们想在不同的测试执行中使用不同的文件名;最好的方法是用命令行发送文件名。由于选择器的存在,我们现在可以在命令行中发送文件名,如下所示:

Example 1     ../../../pin -t obj-intel64/inscount0.so -o pininscount.out -- /bin/ls
Example 2      ../../../pin -t obj-intel64/inscount0.so -- /bin/ls ..

因此,指令计数现在将存储在pininscount.out中,而不是inscount.out;唯一的区别是我们在这里包括-o filename,我们甚至不需要在源代码中做任何更改就可以覆盖默认的文件名。那么,如果我们想从命令行发送这样的多个信息,pin如何解析文件名呢?仔细看看KnobOutputFile的声明。

KNOB<string> KnobOutputFile(KNOB_MODE_WRITEONCE, "pintool", "o", "inscount.out", "specify output file name");

这第一个参数是KNOB_MODE_WRITEONCE,意思就是我们只打开文件写入一次。而这个参数还有其他好几个选项:

参数名作用
KNOB_MODE_WRITEONCE单个值,单次写入
KNOB_MODE_OVERWRITE单个值,用户在命令行执行时可覆盖写入
KNOB_MODE_ACCUMULATE单个值,可更新写入,但是不覆盖
KNOB_MODE_APPEND一系列值,叠加写入

但目前只用的到第一个参数。
之后,“pintool”说明了这个文件应该包含在哪一类家族中。然后使用了“o”,它作为一个pin tool标识,这个标识建议pin tool在命令行中,-o之后将是这个文件变量的期望字符串。可以看上面的例子是如何替换默认文件名的(-o pininscount.out)。最后一个参数只是给用户一个建议,如果需要这个字段,就在命令行中提供。在这种情况下,我们提供了一个默认文件名“inscount”。作为第四个参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值