watchpoint相关内容
如果我为当前作用域的局部变量设置了观察点,它会在超出作用域时被自动删除.有什么方法可以设置一次并在进入相同范围时使其自动保持活动状态? 是否可以设置条件观察点,例如 watch var1 if var1==0?在我的情况下,条件不起作用.每当 var1 的值更改时,gdb 就会停止,而不是直到 var1 == 0 为真.我的 gdb 是 GNU gdb 6.8-debian. 解决方案
..
我想在我的 C++ 程序中临时设置一个观察点(硬件写入中断)以查找内存损坏. 我已经看到了通过 gdb 手动执行此操作的所有方法,但我想通过代码中的某些方法实际设置观察点,这样我就不必闯入 gdb,找出地址,设置观察点,然后继续. 类似: #define SET_WATCHPOINT(addr) asm ("set break on hardware write %addr") 解
..
是否可以在写入特定地址时使 x86 cpu 中断? 我想要一个硬件机制来监控一些地址的变化. 解决方案 我想知道是否可以在写入特定地址时使x86 cpu中断?? 这是可能的. 您可以将调试寄存器之一(DR0 到 DR4)设置为要监视的地址,然后在 DR7 作为“全局断点,仅在数据写入时中断,1 字节大小".一旦完成,该 CPU 完成的任何正常数据写入都将触发调试异常(
..
要求: 当内存位置更改或写入时,我需要生成中断.从 ISR 中,我可以触发蓝屏,它为我提供了带有方法名称的漂亮堆栈跟踪. 方法: 测试计时器 ISR 中的值.显然,这不会产生令人满意的结果. 我发现了 bochs 虚拟机.它有一个基本的内置调试器,可以设置数据断点并停止程序.但那时我似乎无法产生中断. bochs 允许将 gdb 连接到它.不过,我无法在 gdb 支持下构建它
..
GDB监视点如何工作?可以实现类似的功能来利用已定义位置的字节级访问吗? 解决方案 我相信gdb使用MMU来使内存页包含观察到的地址范围的标记为“受保护”-然后,当发生写入受保护页面的异常时,gdb处理该异常,检查该写入的地址是否对应于特定的观察点,然后恢复或下降到gdb 您可以使用 mprotect ,但是如果您想做更复杂的事情而不是仅仅因为写错而失败,就需要实现异常处理程序。
..
我正在尝试使用Eclipse调试器中的Java程序中的监视点来跟踪值的更改.类的层次结构非常复杂,我跟踪的值包装在容器中,该容器在许多地方都使用过. 更具体地说,有一个容器SizeRequirement,它具有我正在跟踪的属性minimum.此类在许多地方的许多布局管理器中用于许多组件,以定义对组件尺寸的要求.我需要捕获确切的调用,在其中为一个特定的布局管理器和其中的一个特定组件更改/设置值
..
您可以按照以下步骤轻松地在XCode中设置观察点(顺便说一句,如果有更简单的方法,我想知道...): -运行程序 -在使用变量的代码中设置一个断点 -到达断点时,右键单击该变量,然后选择“监视"nameOfTheVariable"" -继续执行. 唯一的问题是,每次变量值更改时,执行都会停止.我希望XCode继续执行而不停止,即仅在控制台输出中显示值更改. 此功能似乎在命令行模式下
..
我想在我的C ++程序中临时设置一个观察点(硬件写入中断)来查找内存损坏. 我已经看到了通过gdb手动进行操作的所有方法,但是我想通过代码中的某种方法实际设置观察点,因此我不必闯入gdb,查找地址,设置观察点,然后继续. 类似的东西: #define SET_WATCHPOINT(addr) asm ("set break on hardware write %addr")
..
在Objective-C中,有时我会在LLDB中设置观察点,以让我知道实例变量何时更改.我也可以使用Swift属性来做到这一点吗? 现在,我可以实现的唯一方法是: 在属性中添加didSet处理程序并在其中设置断点(但这需要停止程序并重新编译,这会破坏目的) 在[setPropertyName:]上添加符号断点,但这仅在该类恰好支持Objective-C桥接的情况下有效 我还有其
..
有没有办法跟踪Xcode中的变量更改或内存更改?我正在寻找像Visual Studio的数据断点这样的功能。 我想知道我的对象的视图框架在哪里被更改。我想在成员变量上设置断点并运行它。然后我可以确定它的变化。 解决方案 Xcode使用 gdb (或 lldb ,但这是另一个故事)来实现其调试功能。 gdb 能够设置硬件观察点,因此Xcode也是如此。
..
假设我在主函数中定义了一个名为 var 的变量。我设置了一个观察点。然后我输入另一个名为 func()的函数。目前,观察点可能会被删除,因此我无法访问该变量。任何方法都可以随时保持观察点? 另外,我知道我可以使用类似的语法print main :: var 打印出变量的值。但这还不够。任何好主意? 解决方案 gdb的奇怪之处在于 watch 尝试尊重表达的所有组成部分的范围。因此,如
..
从本质上讲, break * main 和 break main()之间有什么区别?例如: : #include 使用namespace std; int main() { int x = 30; int y = 40; x = y; 返回0; } 当我使用 break * main 和 watch x ,它是这样的:
..
如果一个观察点被设置在一个函数上,然后函数返回,那么GDB总是会删除一个观察点,并显示一条消息,如«观察点7被删除,因为程序已经将块留在»中。下面只是一个例子来说明: struct mystruct { int a,b,c; // char arr [16]; }; void MyFunc(){ mystruct obj; obj.a = 2; } int
..
如果我尝试设置一个观察点,则会收到gdb错误: $ b “ 无法清除没有'Z2'的硬件观察点(写入 - 观察点)数据包 “ 然后,它似乎破坏设备(重新启动设备时,它抱怨操作系统对于SDK来说太旧了,即使它操作系统3.1.2)。 我有一个错误来追踪,真的很容易跟踪观察点,所以这真的很痛苦。 有人知道观察点是否应该工作?如何让它们工作? 解决方案 不幸的是,这是OS 3
..
对于我目前的嵌入式应用程序,我试图将GDB观察点放在一个固定的内存地址。例如,我的应用程序更新以下地址:0x10793ad0。为了确定代码的哪一部分正在损坏该值,我尝试了 watch 0x10793ad0 即使GDB在此之后没有输出任何错误,它仍然无法在执行期间中断,即使我已验证该值正在修改在开始和结束执行之间。 问题: 我真的可以把手表放在
..
我想在C ++程序中临时设置一个观察点(暂停硬件写入)以查找内存损坏。 我已经看到了所有的方法来执行它手动通过gdb,但我想通过我的代码中的某种方法实际设置观察点,所以我不必闯入gdb,找到地址,设置观察点,然后继续。 类似于: #define SET_WATCHPOINT(addr)asm(“set break on hardware write%addr “)
..
如果我为当前范围的本地变量设置了一个观察点,那么它将在退出范围时自动删除。有什么方法可以设置一次,并保持它自动活跃,每当进入相同的范围? 是否有设置条件观察点,如观察var1 if var1 == 0 ?在我的情况下,条件不起作用。每当 var1 的值发生变化时,gdb停止运行,而不是直到 var1 == 0 为真。我的gdb是GNU gdb 6.8-debian。 我同意戴夫然而,按照你的
..
对于我当前的嵌入式应用程序,我试图将GDB观察点放在固定的内存地址。 举个例子,我的应用程序会更新以下地址:0x10793ad0。为了确保代码的哪个部分损坏了这个值,我尝试了 观看0x10793ad0 甚至虽然GDB不会在此之后打印任何错误,但是在执行期间无法中断,即使我验证了在执行的开始和结束之间修改了值。 问题: a)我可以真正把手表固定在地址吗?我没有在网上遇到
..