检查特定函数是否内联 - 英特尔编译器

时间:2012-04-01 14:26:30

标签: c binaryfiles icc

我有C / C ++二进制库(* .dll,*。sys)它们包含的obj文件及其符号(pdb),但不包括源代码和映射文件。
根据它们由英特尔编译器(用于Windows)构建的符号。

有没有办法检查特定函数是否内联?

提前致谢。

1 个答案:

答案 0 :(得分:0)

ICC在内联方面特别具有攻击性,并且在很多情况下,当一个函数被声明为inline时(特别是如果它在MSVC上__forceinline),它&# 39;如果它无法内联它(实际上取决于你的项目编译设置),它会在编译阶段抛出一个错误。

那就是说,老实说,你能够做你需要的唯一方法就是连接一个调试器,在MSVC中暂停应用程序,切换到ASM视图,并搜索你所使用的功能的调用。重新寻找的名字(你说的是C / C ++,它与C ++一样有所不同,你必须搜索受损的名字)。如果您找到对该功能的调用(call _myFunc),则不会内联。

否则,如果您知道在哪里查看,请浏览ASM以查找调用者函数,并检查其来源以验证对被调用者的调用是否为或者不在那里。

这可能听起来相当令人生畏,但它实际上很容易,只有ctrl+f