1

是否可以在回溯中禁用源代码视图,仅显示行号和文件名?

我的意思是不要将这些信息包含在应用程序中,因为您也可以从应用程序文件中读取。

我不想让任何人看到我的源代码。

如果在 GDB 中不可能,是否还有其他具有此类功能的调试器?

4

1 回答 1

2

如果 GDB 可以找到您的原始源文件,它只能显示您的源代码。如果人们可以在回溯中看到您的源代码,那么他们大概也可以看到您的整个源代码库。

因此,我怀疑您的意思是您不希望编译器将您的任何源代码包含在应用程序二进制文件中?

事实上,应用程序二进制文件只包含源文件名、行号、符号名(例如函数和变量名)以及一些类型信息。如果您使用-g3它们,那么它们可能还包括预处理器宏,但大多数人只使用-g.

排除“源”信息的最简单方法是发送带有调试信息的二进制文件。您可以在不使用的情况下构建它,也可以在事后-g使用它来删除它。strip

不使用调试信息构建将删除所有非绝对必要的符号名称(包括static函数和所有局部变量名称),但不会删除外部可见函数的符号名称:链接器需要查看这些名称。strip我认为也可以删除其中的一些,尽管我从未尝试过。请注意,库必须具有外部可见功能的符号名称。

删除调试信息也会删除行号信息和源文件名,所以这仍然不是你想要的。

我建议 a) 重构您的源代码,以免尴尬和/或泄露任何线索,并且 b) 不要附带调试信息。

于 2012-08-14T13:39:24.957 回答