G++ 切换为不包含自己的符号函数名称(和调试数据)-
g++ switch to not include own symbolic function names (and debugging data) -?
还没有找到,但是是否有一个开关可以排除任何调试数据以及生成的代码中对本地(自己的(函数的明文引用?
简单的例子:
void setenv( char* in_str ) {
}
。在可执行文件中给了我一个可读的"setenv"名称,这真的不需要,除非它是一种解释性语言。
同样在可执行文件中 - 变量的文本名称,这更奇怪。
==========
编辑:
到目前为止,尝试了Solaris条带,GNU条带,g++ -O0和-s开关。删除有问题的符号的唯一方法是从目标文件(但不是可执行文件(中"strip --strip-all",但这样它就不会链接。
所以看起来 Richard C 是对的,这确实是 lib* 运行时所必需的。
您可以使用 gnu strip
命令行工具,也可以使用 gcc -s
标志链接。但请注意,唯一的好处是减小文件大小。仅当在调试器中运行应用或生成堆栈跟踪时,二进制文件的这一部分才会加载到内存中。我更喜欢使用 strip 命令,因为您可以单独保存调试信息,如果出于某种原因想要获取堆栈跟踪,则可以加载。
例子:
g++ -o myexecutable ...
strip --strip-unneeded myexecutable
或
g++ -s -o myexecutable a.o b.o c.o ...
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- GCC:在调试构建中优化的静态数据成员
- 如何调试由 C++ 编写的 npm 数据包
- 如何关闭用于在程序中打印调试数据的函数
- 组织从内存读取的数据的最佳方法(用于调试)c++
- G++ 切换为不包含自己的符号函数名称(和调试数据)-
- 在调试中,如何知道对函数的重复调用中参数的统计数据(max-min,average,distribution..)
- 调试数据方法 Q抽象表模型
- 为什么在android清单中关闭可调试会导致数据对齐错误
- 在调试构建中,数据突然变为NULL
- 调试size_t不能作为数据成员工作的原因
- 用c++将真实数据和调试数据流式传输到磁盘
- 在调试器中时Winsock2数据丢失
- 递归算法调试(大数据量)