标签: reverse-debugging

Python可以使用GDB的逆向调试吗?如何?

我正在尝试对 Django 应用程序使用 GDB 的反向调试。我让它在 GDB 中运行,但我不能让它向后运行。

我使用 Ctrl-Z 停止了 Django 应用程序,然后reverse-next在 gdb 提示符下输入,收到错误消息“目标多线程不支持此命令”。

我做错了吗?这不可能吗?两个都?

python django gdb reverse-debugging

6
推荐指数
1
解决办法
2119
查看次数

我可以在核心转储文件中使用“反向调试”吗?

GDB 7.0以后,支持反向调试。

生成核心转储时,我可以使用反向调试命令吗?

我怎样才能做到这一点?

debugging gdb coredump reverse-debugging

5
推荐指数
1
解决办法
1455
查看次数

检测 Java 类以创建反向 Java 调试器的最佳方法是什么?

我想为 Java 创建一个反向调试器(一个可以在程序执行中倒退的调试器),为此我需要在程序执行的同时存储变量数据。我将为此使用全局缓存和更新缓存的静态方法。

我想以这样的方式检测加载的类,在每个字段/变量修改后,我的静态方法将被调用:例如:

public static void updateCache(String fullVarName, Object value){...}
Run Code Online (Sandbox Code Playgroud)

我观察到的是,当一个字段被更新时,putfield就会执行一条指令。当局部变量被更新时,使用(I)STORE指令。所以我想到了检测类,每当发现这样的操作码时,我只需插入另一个getfieldILOAD之后,以获取更新的字段/变量的值,然后我使用 aninvokestatic调用我的静态方法并提供所有必要的信息。

问题是,还有其他使用情况下,变量的集合或阵列以及它们与更新时,如特定的方法来更新HashMapmap.put(key, value)。所以我也需要拦截这些调用,但是有很多这样的方法,我需要找到所有这些方法并对其进行硬编码......
有解决方法吗?或者也许我遗漏了一些东西,有一个更简单的解决方案。

编辑:我之前也研究过 JVMTI 并运行了一些基准测试。对于我的用例来说,它似乎太慢了,例如给我的程序增加了 7-100 倍的减速.....

java debugging instrumentation bytecode reverse-debugging

5
推荐指数
1
解决办法
156
查看次数

GDB错误:"进程记录:当前体系结构不支持记录功能"

我正在尝试在GDB中执行反向执行,特别target record是按照此处的说明在gdb中运行我的程序之后执行,并触发以下错误:

Process record: the current architecture doesn't support record function.
Run Code Online (Sandbox Code Playgroud)

这似乎与此处讨论的问题相同,但从未得到解决.这是我的gdb版本信息:

alexcannon$ gdb -version
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin12.5.0".
For …
Run Code Online (Sandbox Code Playgroud)

gdb reverse-debugging

4
推荐指数
1
解决办法
914
查看次数