问题标签 [watchpoint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
218 浏览

gdb - 在 gdb 尝试使用观察点访问地址后,Snow Leopard 崩溃

我正在使用通过 MacPorts 为 Snow Leopard 编译的 GDB 7.1 调试二进制文件(仅限程序集)。我对使用findgdb 命令找到的特定地址感兴趣。因此,它确实是一个有效的地址:

问题是每当我为它设置一个观察点(watch *0x00196f34)并且它被访问时,系统会立即崩溃并重新启动。

我注意到当时启用了硬件观察点,期望结果不那么严重,我切换到使用软件观察点set can-use-hw-watchpoints 0,但这并没有解决问题。

我尝试使用gdb 6.3Xcode 附带的版本,并且手表工作正常。在为 6.3 和 7.1 设置此类手表时,我注意到了一个区别:

对于 gdb 6.3

对于 gdb 7.1

为什么旧的 gdb 以十六进制打印,而新的 gdb 将地址转换为十进制数?我仍然想使用 gdb 7,所以有什么线索吗?

布鲁诺·贝拉斯科

0 投票
4 回答
22747 浏览

iphone - 在 Xcode 中跟踪变量或内存变化?

有什么方法可以跟踪 Xcode 中的变量更改或内存更改?我正在寻找像 Visual Studio 的数据断点这样的功能。

我想知道我的对象的视图框架在哪里被改变。我想在成员变量处设置断点并运行它。然后我可以确定它在哪里发生了变化。

0 投票
1 回答
175 浏览

debugging - 如何知道哪一行的哪个运算符改变了TCL中变量的值

有时您无法理解变量值何时更改。并且有必要通过在变量上放置一个观察点来找到该行。如何做到这一点?TCL trace 命令可以用来获取修改变量的行吗?

0 投票
1 回答
1120 浏览

memory - 如何实现/设置数据断点?

要求:

当内存位置更改或写入时,我需要生成中断。在 ISR 中,我可以触发蓝屏,它会为我提供带有方法名称的漂亮堆栈跟踪。

方法:

  • 测试定时器 ISR 中的值。显然,这不会产生令人满意的结果。
  • 我发现了bochs虚拟机。它有一个基本的内置调试器,可以设置数据断点并停止程序。但那时我似乎无法产生中断。
  • bochs 允许将 gdb 连接到它。不过,我无法使用 gdb 支持来构建它。

其他想法:

  • 一种“预览指令”中断,在执行每条指令之前触发它。使用的内存写入指令集应该非常易于管理,但我认为提取地址仍然是一个 PITA。我认为没有这样的中断。
  • 一种“预览内存访问”中断。再说一次,我不认为它在那里。
  • 滥用分页。将感兴趣的页面标记为不存在并在页面错误处理程序中测试地址。仍然需要区分读写操作,我认为,页面错误处理程序不知道确切的地址,只知道页码。
0 投票
1 回答
1982 浏览

debugging - gdb,break vs tbreak 和 watchpoint

谁能告诉我关于观察点的 break 和 tbreak 有什么区别?

A 有一个简单的测试代码:

当我在 main() 上使用 break 时,然后观察,toto 似乎从 0 切换到 2:

但是当我使用 tbreak 时,手表似乎可以工作:

与 start 命令的结果相同,它可以工作。

0 投票
1 回答
465 浏览

debugging - 无法在 GDB 中设置观察点

我正在调试并想检查变量值发生变化的地方。为此,我尝试通过说诸如 watch 'structure->somefunc.getvalue()' 之类的东西来设置观察点,这不是一个简单的变量(可能是一些调用函数的较大结构的一部分)。当我这样做时,gdb 在当前上下文中说 No symbol 'structure->somefunc ..'。当我在同一目录中执行 grep 时,我得到相同表达式的 3-4 个实例。我错过了什么吗?

0 投票
1 回答
2697 浏览

gdb - 防止 gdb 在观察点停止

文件 main.c:

在 gdb 中,我通常设置一个断点,然后指定一个观察点作为要在该断点上执行的命令:

每当监视变量更改时,执行就会停止,问题是(据我所知)没有办法告诉 gdb 只打印监视变量的值并继续,因为它是一个嵌套的观察点。如果它是一个独立的观察点,则可以使用命令“继续”轻松完成(当我在 main() 范围内时):

那么,有没有办法让 gdb 不在嵌套的观察点上停止,而只打印值的变化?或者更好的是,指定要在嵌套监视/断点上执行的命令?

我进一步在 gdb 中尝试了“设置投诉 0”“设置确认关闭”,但无济于事

0 投票
2 回答
409 浏览

iphone - 在设备上找不到过度释放的对象调试

我有一个相当大的应用程序,它在模拟器中工作,但在 iPhone 设备上的过度发布对象场景中创建。NSzombies 似乎是要走的路线,除了该对象在模拟器上没有过度释放并且 NSZombies 在设备上不起作用。通过数小时的日志记录,我似乎能够将它固定在我跑步之间的某个地方 -

[locManager startUpdatingLocation] 和开始 -

(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

这就解释了为什么它可以在模拟器上运行,我没有检测到定位能力并且不运行该定位代码。

当我在 [locManager startUpdatingLocation] 之前和之后在线 NSLog 时,我的 NSString 对象被分配并存在。但是当应用程序执行并点击 locationManager: NSLog 显示 NSString 已被释放,消失了。这个字符串对象与位置处理或功能完全无关。不相关的 NSString。我已经注释掉了所有其他潜在的活动,并注释掉了所有明确的发布代码,但找不到它发生的那一刻。

我更沮丧的是 lldb 似乎不支持观察点而 gdb 支持它们,但这个版本似乎它们不起作用!gdb 将设置一个硬件观察点,然后 Xcode 说它正在运行,但 30 分钟后仍然没有视觉活动或中断。

我在 Lion、Xcode 4.1.1 和太多的咖啡上。

我应该采取什么方法在如此狭窄的活动范围和有限的工具中找到这个已发布的 NSString 对象?

0 投票
2 回答
6146 浏览

debugging - 在 GDB 中设置观察点

我正在操作一个庞大的代码库,并希望监视特定变量的值(该变量深埋在其中一个文件中),尤其是当它设置为零时。

1)变量不属于全局范围。有没有比首先在定义它的函数中设置断点然后设置观察点更好的选择?
2)在尝试了 1 中的选项后,我看到观察点在一段时间后被删除,说它使用了这个。这样它增加了过程的乏味,因为我必须一次又一次地添加它?有什么解决方法吗?
3)有没有办法检查一个特定的变量是否等于0(或任何特定的常数)?

0 投票
2 回答
3716 浏览

debugging - 硬件观察点——它们是如何工作的?

GDB 观察点如何工作?是否可以实现类似的功能来利用定义位置的字节级访问?