在 C++ 中查找静态初始化器和析构器
我的程序有太多静态初始化程序和析构函数。我想摆脱他们所有人。所以我需要一种方法来找到他们。
在可执行文件上运行 nm 会得到如下结果: 0004bfc0 t _Z41_static_initialization_and_destruction_0ii
有没有一种好方法可以从包含 static_initializers 的位置获取文件列表?
I have a program with way too many static initializers and destructors. I want to get rid of all of them. So i need a way to find them.
Running nm on the executable gives something like this:
0004bfc0 t _Z41_static_initialization_and_destruction_0ii
Is there a good way to get a list of files from where static_initializers are being included?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在目标文件上运行 nm,该文件随后链接到最终的可执行文件中。或者创建一个脚本来为您解析 nm 的输出(如果您有很多事情要做)。
根据数据的定义,您可能还会发现有重复项,这些重复项可以减少为一个对象。
you could run nm on an object file which is later linked into the final executable. or create a script to parse nm's output for you if you've a lot to go through.
depending on the definitions of the data, you may also find you have duplicates which could be reduced to one object.
如果您在 Windows 上使用 Microsoft Visual C++ 的 PDB 文件格式,则可以使用此脚本:
它将打印所有 C++ 初始值设定项。
或者,如果您在 Visual Studio 中,则可以观看此表达式:
当您展开数组时,它将列出所有 C++ 初始值设定项。
If you're using Microsoft Visual C++'s PDB file format on Windows, you can use this script:
It will print all C++ initializers.
Alternatively, if you're inside Visual Studio, you can Watch this expression:
It will list all C++ initializers when you expand the array.