问题标签 [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.
c++ - 如何使用 pin 工具跟踪二进制仪器中的特定循环?
我刚开始使用 intel pin 工具,想跟踪二进制文件中的某个循环,但我在每次运行中发现每次运行中更改的指令地址,我如何才能找到特定指令或特定循环每次运行都有变化?
编辑0:
我有以下地址,其中一个是RVA:(地址的第一部分(小地址)每次运行都是不变的,但最后一部分(大地址)每次运行都会改变)
地址loop_repeation编号。 _of_Instruction_In_Loop
4195942 1 8
4195972 1 3
.... ... ... ...
140513052566480 1 2
... ... ... ...
binaryfiles - Intel Pin Tool:从地址获取指令
我正在使用 Intel 的 Pin Tool 进行一些二进制检测,并且想知道是否有 API 可以在给定地址获取指令字节码。
就像是:
其中 addr 是所需的地址。
我知道 Pin 给出的功能指令(在许多简单/手动示例中使用)获取指令,但我需要知道其他地址的指令。我仔细阅读了网络,但无济于事。任何帮助,将不胜感激!
干杯
c++ - 生产者消费者使用 intel-pin 内部线程
我正在尝试实现一个生产者消费者模型,以分离我的 pin 工具的分析和记录数据(从分析中收集)部分。通过 PIN 线程 API,我找不到任何可以根据某些谓词挂起线程或发出线程恢复信号的函数(例如在 POSIX 线程中)pthread_cond_wait()
。 pthread_cond_signal()
那么,是否有任何解决方法可以使用现有功能实现生产者消费者模型,同时避免忙等待。
注意:生产者和消费者线程都是由PIN_SpawnInternalThread()
.
c++ - PIN 工具可以检测包含运行其他命令的代码的 bash 脚本吗?
我写了一个 PIN 工具,可以在二进制图像中的某个函数之前和之后注入一些代码。它适用于单个二进制图像。
现在,我的目标是使用该工具在 Linux 中检测 Xserver。我试图通过 PIN 工具检测“startx”,但它不起作用。后来发现startx只是一个运行其他命令的shell脚本。
如果我想使用 PIN 检测 xserver,我需要遵循哪些步骤?是否可以使用 PIN 以某种方式检测 shell 脚本?
c++ - 如何将指令传递给 intel-pintool 中的回调?
我是 pintool 的新手,我知道如何将指令地址传递给回调,方法是:
INS_InsertPredicatedCall(
ins, IPOINT_BEFORE, (AFUNPTR)MyFunction,
IARG_ADDRINT, INS_Address(ins),
IARG_END);
// My call back function is:
MyFunction(UINT64 insAddress) { .... }
有没有办法将指令传递给回调,或者可以从它的地址中提取它。
喜欢:
MyFunction( UINT64 insAddress, INS ins ) {.... }
MyFunction(UINT64 insAddress) {
INS ins = someFunction(insAddress);// some function that return instruction of a specified address
}
linux - 由于信号 6,Pin 应用程序异常终止
我正在尝试使用 Pin 工具和 loopprof 来使用 MPI 检测我的集群,但由于信号 6 出现此错误,pin 异常终止:
谁能帮我解决这个错误??
intel-pin - 如何在 pintool 中按名称查找 RTN?
我使用 RTN_FindByName() 来搜索特定的 RTN,但它对我不起作用,而且我尝试强制编译器不内联 RTN,但仍然无法工作,
测试代码:
pintool中的代码:
我该如何解决这个问题,或者通过其他方式做到这一点?
编译器:gcc 版本 4.8
C++ 语言
操作系统:Ubuntu 14.04 LTS,64 位
输出(测试代码):
未找到 RTN
未找到 RTN
未找到 RTN
c++ - 如何在非 JIT 模式下使用 Pin 工具
我写了一个 Pintool 并在 JIT 模式下使用它。我从 Pin 教程中读到 Pintool 也可以在非 JIT 模式下使用,但我不明白该怎么做。我需要一个例子。谢谢。
intel-pin - 如何指定一个代码区域以通过 pintool 对其进行检测?
Pin有四个粒度级别:routine、指令和图像、trace。我可以指定一个限制/区域来开始和停止插入检测代码吗?可以通过类似指令(#start instrumentation,#end instrumentation)或类似的东西,
一个例子:
for( int i=0; i< x; i++)
{
#startInstrumentation
for( ....;.....;.....)
{
// some code
// function call, conditions , loops, ....
}
#endInstrumentation
}
有没有办法做到这一点?
c++ - 使用 PIN 的模拟器上的 Pthread 安全编程
我正在使用一个硬件模拟器,它使用 PIN 工具来执行工作负载。作为工作量,我使用以下代码。尽管它可以在带有-lpthread标志的 Ubuntu 上运行,但在加入线程时它会在模拟器上冻结。
我认为本机操作系统可以容忍但模拟器不能容忍此代码中有一些不安全的东西。对此进行编码的最合适方法是什么?
主.h:
主.cc:
execute_parallel()
包含 2 个用于创建和连接 pthread 的 for 循环。manual_schedule()
具有相同代码的展开版本。在 PIN 上执行时,两者都运行良好,直到第一个线程的连接函数。当加入来时,它会冻结并永远保持这种状态,没有任何信号或错误。在带有-lpthread标志的 Ubuntu 上执行时,它可以完美运行并生成结果。
在这种情况下实现 pthread 的最安全和最合适的方法是什么?
提前致谢
编辑
我注意到程序在阅读之前冻结payload_texts[args->index1]
。添加互斥锁有助于在这一点上继续进行。它也正常工作了一次。现在它是不确定的,在同一个二进制文件的多次执行中,它很少能正确完成。我认为应该是 jaccard_visit 函数内部出现死锁的原因。我将其更改如下: