是否可以在回溯中禁用源代码 View ,只显示行号和文件名?
我的意思是不要将这些信息包含到应用程序中,因为您也可以从应用程序文件中读取。
我不想让任何人看到我的源代码。
如果在 GDB 中不可能,是否有任何其他调试器具有此功能?
最佳答案
GDB 只有在可以找到您的原始源文件的情况下才能显示您的源代码。如果人们可以在回溯中看到您的源代码,那么大概他们也可以看到您的整个源代码库。
因此,我怀疑您的意思是您不希望编译器将您的任何源代码包含在应用程序二进制文件中?
实际上,应用程序二进制文件仅包含源文件名、行号、符号名(例如函数名和变量名)和一些类型信息。如果您使用 -g3
,那么它们可能还包含预处理器宏,但大多数人只使用 -g
。
排除“源”信息的最简单方法是不发送带有调试信息的二进制文件。您可以首先不使用 -g
来构建它,也可以在事后使用 strip
将其删除。
不使用调试信息构建将删除所有不是绝对必要的符号名称(包括 static
函数和所有局部变量名称),但不会删除外部可见函数的符号名称:链接器需要看到那些。 strip
也可以删除其中的一些,我认为,尽管我从未尝试过。请注意,库必须具有外部可见函数的符号名称。
删除调试信息也会删除行号信息和源文件名,因此这仍然不是您想要的。
我建议 a) 重构您的源代码,这样就不会令人尴尬和/或泄露任何线索,并且 b) 不要附带调试信息。
关于linux - GDB - 在回溯中禁用源 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11951958/