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