首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用intel-pin检测R程序

使用intel-pin检测R程序
EN

Stack Overflow用户
提问于 2019-08-31 18:35:59
回答 1查看 91关注 0票数 1

我正在使用pinatrace.so工具检测R程序,以生成读取和写入内存指令的跟踪。我观察到的是,多个#eof语句在跟踪文件中的不同位置打印(实际上应该只在跟踪结束时打印)。此外,#eof之后紧接的下一行会被扭曲,并且不能正确打印。

我使用以下命令调用R shell和我的R程序:

../pin -follow_execv -t obj-intel64/pinatrace.so -- /home/R-3.5.3。/bin/R -f hello.R

如下所示打印跟踪文件:

0 0x7ffc812cd1c8

%1 0x7ffc812cd1c8

0 0x7f7f8555ee78

#eof

f6971ce8

%1 0x6f4518

0 0x7ffc171a0b70

.

.

%1 0x7ffc6da8f078

0 0x7f7c38786e78

#eof

ffc171a07c8

0 0x6f4e30

0 0x6ff918

这个工具出了什么问题?

EN

回答 1

Stack Overflow用户

发布于 2019-09-02 04:16:32

当使用follow_execv旋钮调用Pin时,它将在创建的每个子进程中创建其自身的新副本。新副本不知道另一个副本正在父副本中运行,或者根本不知道。请参阅here

如果启用了-follow_execv,并且用户尚未注册接收通知,则Pin将使用与当前进程相同的命令行注入到子进程/执行进程中。

如果拼接工具在创建时没有考虑到-follow_execv,那么拼接工具的所有副本通常都会写入同一个文件。这将创建奇怪的工件,例如您所看到的,因为不同的进程写入相同的文件并终止该文件,而其他进程正在写入终止符之后。

最简单的解决方案是向文件添加PID后缀,另一种选择是使用Follow Child Process API (上面链接)来确定哪个子进程是您想要跟踪的实际R程序。最后,R可能支持插装,您可以使用它来插装程序本身。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57737261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档