- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我指的是 http://www.wintoolzone.com/articles/AuthoringStackWalkerForX86.pdf 上的文章
我正在使用 VC++ 2008。我意识到当我将优化设置为“最大速度 (/O2)”时,即使我将“省略帧指针”显式设置为否,获取函数返回的地址也无法通过堆栈正常工作帧指针。
文章中提到:
"Requires stack frame pointer to be present in the produced code. Optimized code where stack frame pointer is absent will not be walked by this code. Its left as an exercise for the reader to implement it over this codebase."
我想知道,你们中的任何人都有一种可移植的方式来遍历优化和未优化的代码,而不假设堆栈帧指针的可用性?
目前,上面的堆栈遍历器示例正在假设每个函数都具有
push ebp
mov ebp,esp
作为函数代码的第一行。
我曾尝试过 RtlCaptureStackBackTrace
,但它最多 62 帧的限制不符合我的目的。
最佳答案
我想它的主要假设不是模式
push ebp
mov ebp,esp
而是假设 ebp
始终用作帧指针。这允许简单的堆栈展开:ebp
指向最后保存的堆栈帧,它上面的所有数据都是本地数据,堆栈上的下一个值是调用者的返回地址。简单。
对于复杂的,您应该直接“转储”堆栈,尝试尽可能多地说明每个值。它只是一个值吗?回邮地址?函数的参数?或者可能是一个字符串?
要检查一个双字是否是返回地址,您可以枚举所有加载的模块并获取其具有执行权限的部分的地址范围。 (也许 VirtualQuery
也能做到这一点)。
通过对每个模块执行“盘点”,您可以获得所有导出符号的列表。这至少会给你一些名字。
关于c++ - 使 Stack Walker 在启用优化的应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4384008/
这是我的第一篇文章,所以要温柔。 ;) 问题:我希望能够将 os.walk 用作目录 walker,但不能进入某些文件夹。例如: 树: \Proj1_0 \Load001 \l
我希望在 wordpress 菜单中显示分层父帖子的子帖子数量。所以,我将把父帖子添加到菜单中。显然,我将不得不使用定制的 Walker,但我不确定从哪里开始。 即: Menu Item (8) Me
我在找这个算法 (算法会从元素列表中随机选择每个元素被选中的概率(权重)不同) 并且只找到了 python 和 c 实现,在我做了一个 C# 之后,有点不同(但我认为更简单)我想我应该分享它,我还需要
我正在尝试按退格键来换行选择。现在按键部分已经可以工作,但现在我正在尝试将选择范围包裹在一个范围内。当选择范围内存在 block 元素时也是如此。但我注意到在 CKEDITOR 4 中,walker
Solaris 中是否有 Dependency Walker 之类的工具。 我的目标是验证这些:- 从 Java native (c++) 函数调用发生了吗? 从 Java 传递的所有参数都在 nat
我有一个使用 wp_nav_menu 输出的简单菜单.我想输出以下类型之一: Home Movies ▼ In
提前为菜鸟的错误道歉。这是我的第一个问题。首先,一些背景: 我正在尝试使用 dependency walker 为程序创建一个模块,以在我没有 lib 或任何源代码的 .dll 中查找 C++ 函数。
它可以列出导出函数中使用的函数。 它是如何做到这一点的? 最佳答案 关键是每个 Windows 模块(可执行文件和库)都包含一个导入表,其中列出了它所依赖的所有其他模块。该表由链接器构建,操作系统在内
我正在尝试在我的项目中包含一个外部库(.lib 指向一个 .dll)。我正在使用 QT 在 Windows 上构建(它似乎使用 msvc2010 作为编译器)并且有:LIBS += /.lib在我的
我需要一个文件系统 walker,我可以指示它忽略遍历我想保持不变的目录,包括所有子目录在那个分支下面。os.walk 和 os.path.walk 就是不这样做。 最佳答案 实际上,os.walk
Illegal offset type in isset or empty 是什么意思,我以前从来没有遇到过这个错误信息?你能给我解释一下这条消息吗? 也把学习如何做的代码放在这里评论 'pri
给定一个 AST,生成 Walker 的原因是什么?遍历树并执行输出的类,而不是给每个 Node a类compile()方法并让它负责自己的输出? 这里有一些例子: Doctrine 2 (一个 OR
Illegal offset type in isset or empty 是什么意思,我以前从来没有遇到过这个错误信息?你能给我解释一下这条消息吗? 也把学习如何做的代码放在这里评论 'pri
我有一个 fortran dll,我想知道它依赖于 redistribution purpose 的程序集. 我发现的一件事是,dependency walker 没有显示所有的依赖项,即我的程序集依
好的,我有一个 Walker 类(class)。我试图仅向具有子菜单的菜单项添加下拉箭头。 箭头图标: 问题目前我得到了每个菜单项的箭头,因为我不确定如何更改它,所以它只显示带有子菜单的菜单项。 c
我无法理解 node.js walker 的签名/ header 作品。我知道,步行者可以遍历文件夹,您可以设置过滤器等。但我不太明白 .on 的签名是如何工作的。 举个例子: Walker('/et
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我在我的应用程序中使用其中一个 Dll 时遇到了一些问题,我在其上运行了 dependency walker。我不确定如何阅读它,但我得到了以下结果 它是否暗示任何 x86-x64 不兼容?无论如何我
我指的是 http://www.wintoolzone.com/articles/AuthoringStackWalkerForX86.pdf 上的文章 我正在使用 VC++ 2008。我意识到当我将
我需要有关 Wordpress 网站导航的帮助。我试图让 Wordpress 以这种格式打印我的导航: Vegetables Fruits Grain
我是一名优秀的程序员,十分优秀!