linux - GDB - 在回溯中禁用源 View

标签 linux security debugging gdb

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

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

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

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

最佳答案

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

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

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

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

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

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

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

关于linux - GDB - 在回溯中禁用源 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11951958/

相关文章:

php - UTF-8贯穿始终

c# - 在保持 Web.Config 安全的同时从 WebMethod 获取错误消息

security - 您能轻松猜出可能生成的 GUID 吗?

C# 更改私有(private)字段时如何中断?

c# - 找出风格问题的原因

linux - Linux 上的 Libquicktime 支持

python - 为什么 `poll.poll` 比 `epoll.poll` 快?

mysql - 这种临时登录方式很可怕吗?

python - 如何从删除的文件中删除 PyDev 调试器断点?

c - debian 和 Redhat 之间的 malloc()/free() 行为不同