如何判断win和*nix中的二进制文件是否已发布或调试

32 compiler-construction debugging release

是否有一个简单的命令行实用程序来检查可执行文件和动态库之类的二进制文件,以判断它们是发布版还是调试版?在*nix或windows上有类似的东西吗?

Bob*_*ait 29

  • 对于Linux上的C++ ,您可以:

        objdump --source yourbin |grep printf
    
    Run Code Online (Sandbox Code Playgroud)

    用你做的任何函数调用替换printf.如果是debug,它将显示您执行的所有实际源代码调用.如果是释放,它将只显示符号表中的已建立符号.

  • 对于Windows上的C++ ,您可以使用depends.exe并查看它是否依赖于MSVCRT(发布)或MSVCRTD(调试)


Nor*_*rtl 17

在linux上,即使对于动态库,也可以使用"file"命令.如果它说"剥离",则所有调试符号都被剥离.如果它说"没有剥离"则相反

  • 可以使用非剥离版本或剥离调试版本. (15认同)
  • 不是这样,剥离符号与调试或发布版本无关 (7认同)