问题标签 [intel-pin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
218 浏览

linux - 主要性能和 PIN 分析差异

为了分析执行时间的某些属性,我打算在程序的单独执行中同时使用PerfPIN来获取我的所有信息。PIN 会给我指令混音,Perf 会给我这些混音的硬件性能。作为健全性检查,我分析了以下命令行参数:

所以我完整的命令行输入如下:

在 PIN 命令中,为了这篇文章,我忽略了文件的所有路径内容。icount.so此外,除了默认的动态指令计数之外,我还更改了基本指令以记录指令混合。结果惊人地不同

这应该通过具有大致相同的指令数和大致相同的分支分布来作为完整性检查。 为什么动态指令计数会减少x100倍?! 我期待一些噪音,但这有点多。

此外,Perf 的分支数量为 20%,但 PIN 报告约为 25%(这似乎也有一点差异,但这可能只是大量指令计数失真的副作用)。

0 投票
3 回答
278 浏览

c - 有一些我没有使用过的奇怪 malloc 函数

我使用 pin 来分析我的简单程序。

它有 4 个 malloc 函数,但是,当我将 pin 与名为 malloctrace 的 pintool 一起使用时,它会显示超过 4 个 malloc。

这些 malloc 函数是什么?

我的操作系统是 Ubuntu 12.04 64 位。以下项目是我制作的代码和 pintool 的结果。


0 投票
2 回答
859 浏览

c - 强制内存分配总是到相同的虚拟地址

我正在试验Pin,一种检测工具,我用它来根据我的变量的内存地址计算一些统计数据。我想用我的检测工具收集的信息重新运行我的程序,但为此,虚拟内存地址在不同的运行中保持相同是至关重要的。

一般来说,我应该让操作系统处理内存分配,但在这种情况下,我需要某种方式来强制它始终分配给相同的虚拟地址。特别是,我对一个非常长的数组感兴趣,我目前正在分配它numa_alloc_onnode(),尽管我可以使用其他东西。

正确的方法是什么?

谢谢

0 投票
2 回答
1738 浏览

c++ - Intel Pin 获取函数参数编号

我正在尝试使用 Pin 编写函数调用跟踪器。它可以打印每个函数调用以及每个参数的值。

一个困难是获取一个函数的所有参数。使用 RTN_InsertCall,您可以将函数参数传递给您的检测代码:

intel pin RTN_InsertCall 多个函数参数

但是,您需要知道当前例程的参数数量。有没有办法做到这一点?

谢谢!

0 投票
2 回答
542 浏览

mpi - 如何在 MPI 代码上使用 Intel Pin

我对 MPI 和 Intel Pin 很陌生。我已经在我的 linux 环境中安装了 pin-2.13-62732-gcc.4.4.7-linux,我不需要在 MPI 代码上使用这个工具。例如,我想获取 MPI 代码(如 imul.c)的指令数(如 pin 中已存在的 inscount0)。你能告诉我我能做什么吗?

0 投票
1 回答
914 浏览

exception - 英特尔 pin 工具无法捕获抛出的异常

我现在正在学习 Intel pin,我在 pintool 的 main 函数中编写了以下代码。

运行它(pin.exe -t Test.dll -- calc.exe),但它只是崩溃了,这肯定是由于未捕获的异常。但我想知道为什么我的“catch”代码失败了。

任何人都知道原因,或者如何在 pintool 中捕获异常?

0 投票
1 回答
456 浏览

c++ - PIN:识别MOV和间接内存操作数

对于程序分析工具,我需要识别所有类型的 MOV 操作(Register->Register、Memory->Register、Register->Memory)。我能够识别 Memory->Register,但其他的却失败了。

另一个问题是间接内存操作数。我需要以某种方式识别它们。我知道 PIN 能够检查我们是否有内存读取/内存写入。但是间接内存访问是例如 MOV eax [ebx],不是吗?我该如何处理它们?在这个例子中我需要 ebx 的内容。

干杯

0 投票
1 回答
921 浏览

x86 - 使用 Intel-pin 提取操作数的副本

我是 intel-pin 的新手,我正在尝试对二进制文件进行位宽分析。
我尝试分析每条汇编指令中用于操作数的确切位数。
例如,如果存储了一个无符号整数 15,那么 4 位就足够了。
为此,我需要获取操作数的副本。有什么方法可以使用 intel-pin api 做到这一点。

0 投票
1 回答
705 浏览

c++ - 计算 BBL_NUMins < 7 的连续基本块

我是 pintool 的新手,我想要计算BBL_NumINS < 7带有特定尾指令(例如间接跳转或间接调用或 ret)的连续基本块的数量。所以我写了这段代码

输出文件

我用 Firefox 测试了这个 pintool。为什么当 Counter 为 0、2、3 时引脚不显示基本块?

0 投票
2 回答
1188 浏览

gcc - 在 pin 工具中使用可执行文件的调试信息

我正在创建一个 pin 工具来跟踪变量实际需要的位宽。为了跟踪高级别的(例如 C 变量),我想使用可执行文件中构建的调试信息。
我找不到使用 pin API 提取调试信息的方法。
请让我知道是否有任何 pin API 函数调用以提取调试信息。如果使用 pin 无法实现,有哪些替代方案?
(例如 DynamoRIO)