2012-08-14 53 views
1

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

我的意思是不包括这些信息给应用程序,因为你也可以从应用程序文件中读取。

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

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

+1

不是最好的主意。试图隐藏源代码的人通常或者a)对安全性感到困惑,或者b)被代码困窘。 – 2012-08-14 12:17:44

回答

2

GDB只能显示你的源代码,如果它能找到你的原始源文件。如果人们可以在回溯中看到你的源代码,那么他们也可以看到你的全部源代码。

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

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

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

不使用调试信息构建会删除所有不是绝对必要的符号名称(包括static函数和所有局部变量名称),但它不会删除外部可见函数的符号名称:链接器需要查看这些符号名称。 strip可以删除一些也,我想,虽然我从来没有尝试过。请注意,库必须具有用于外部可见功能的符号名称。

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

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