【发布时间】:2015-02-03 09:09:49
【问题描述】:
我在运行不同版本的gcc 的机器上共享我的.gdbinit 脚本(通过NFS)。如果我正在调试的代码已经使用特定的编译器版本编译,我希望执行一些 gdb 命令。 gdb可以吗?
【问题讨论】:
-
@PaulR 虽然编译器版本通常默认嵌入:
readelf -p .comment the_program,但我不知道您是否可以从 gdb 访问它。 -
@nos:我不确定它是否可靠 - 我只是尝试使用(主要)用 ICC 构建的可执行文件,它声称它是用 gcc 构建的 - 我猜信息来自库而不是直接与编译器相关。还有使用多个编译器构建的代码的问题,例如一些使用 gcc 构建的模块,一些使用 ICC - 如何处理/报告?
-
可能是 icc 不遵循添加 .comment 部分的约定。如果我用 clang 构建一个二进制文件,它会报告 gcc 和 clang 版本,大概是因为库版本 - 如果我将使用 g++ 和 clang++ 构建的目标文件链接在一起,也会如此
-
@nos:我认为你是对的,
readelf是要走的路。请参阅下面的答案。