问题标签 [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 投票
2 回答
1373 浏览

debugging - lldb 观察点打印值并自动继续

使用设置观察(lldb) watchpoint set var myvar点将在写入变量时暂停程序并将值的更改打印到调试控制台。

通过在 Xcode GUI 中使用它,我知道可以设置执行操作的断点并在之后自动继续程序。

观察点是否可能出现类似的行为?我可以设置一个仅打印更改并在之后自动继续程序执行的观察点吗?

0 投票
2 回答
2670 浏览

ios - 是否可以在 Swift 属性上设置观察点?

在 Objective-C 中,我有时会在 LLDB 中设置观察点,让我知道实例变量何时发生了变化。我也可以使用 Swift 属性来执行此操作吗?

现在,我能做到这一点的唯一方法是:

  • 将 didSet 处理程序添加到属性并在内部设置断点(但这需要停止程序并重新编译,这会违背目的)
  • 添加一个符号断点,[setPropertyName:]但这仅在该类恰好支持Objective-C桥接时才有效

我还有其他选择吗?

0 投票
2 回答
6426 浏览

xcode - 在 XCode 6 中,如何在不停止执行的情况下设置观察点?

您可以按照以下步骤在 XCode 中轻松设置观察点(顺便说一句,如果有更简单的方法,我想知道...):
- 运行程序
- 在使用变量的代码中设置断点
-到达断点时,右键单击变量并选择“Watch "nameOfTheVariable"'
- 继续执行。

唯一的问题是每次变量值更改时执行都会停止。我希望 XCode 继续执行而不停止,即仅在控制台输出中显示值更改。
此功能似乎在命令行模式下可用,虽然我最初想避免它,但我使用该模式发布了一个解决方案(见下文),因为它似乎是做我想做的唯一方法,即在显示变量的同时继续执行变化。

0 投票
4 回答
718 浏览

linux - 多个实例上的 Gdb

我的系统上运行了一个特定进程的多个实例。在流程执行期间的某个时刻,一些内部数据结构被无效数据覆盖。这发生在随机时间间隔的随机实例上。除了设置内存访问断点之外,还有其他方法可以调试吗?此外,是否可以同时在所有这些进程上设置内存访问断点,而无需为每个进程启动单独的 gdb 实例?该进程在具有 2.6 内核的 x86_64 linux 系统上运行。

0 投票
2 回答
1587 浏览

javascript - 如何保持对 Javascript 开发变量的观察点?

我正在使用 Javascript 开发一个 WebGL 项目,我发现很难在我的代码中跟踪错误。

为了调试程序,我需要一个观察点检查器,以便我可以检查错误的变量数据何时被更改。

目前我正在使用 Chrome 浏览器,开发工具中缺少此功能。有人可以建议我一些具有观察点功能的用于 Javascript 调试的高级开发人员工具包吗?

0 投票
1 回答
1048 浏览

c++ - 如何在gdb中为类成员变量设置断点

如何为此类的所有实例设置断点(或观察点)到类中的成员变量?

我曾尝试使用此成员变量在课堂上设置断点,但这不起作用。

0 投票
1 回答
1003 浏览

gdb - 想要持续观察并偶尔检查 gdb 中当前帧之外的变量

假设我定义了一个var在主函数中命名的变量。我为它设置了一个观察点。然后我输入另一个名为func(). 此时,可能会删除观察点,因此我无法访问该变量。有什么方法可以让您随时保持观察点?

另外,我知道我可以使用诸如print main::var打印出变量值之类的语法。但这还不够。有什么好主意吗?

0 投票
1 回答
359 浏览

ios - LLDB – 在任意对象的实例变量上设置观察点

出于某种奇怪的原因,回到视图控制器会改变userInteractionEnabled我的视图子视图_settingsButtonUIButton类型。我想知道为什么会这样。在视图控制器的代码中设置断点后,我尝试这样做:

在此处输入图像描述

但我不知道如何访问_settingsButton视图控制器属性的实例变量。我该怎么做呢?

0 投票
1 回答
931 浏览

gdb - 使用 gdbserver 和 qemu 进行调试,如何在控制寄存器 cr3 上设置观察点

我正在调试内核,我想知道 cr3 寄存器何时更改。我知道如何在 eax 等通用寄存器上设置观察点。

问题是,由于 gdb 无权访问控制寄存器,因此在 cr3 上设置观察点不起作用。

那么,是否可以从 qemu 监视器设置观察点?如果是,如何?

0 投票
0 回答
581 浏览

c - 应用程序使用 gettimeofday() 和寄存器上的观察点卡在 GDB 中

我只是在使用 GDB 进行一些实验并使用寄存器,但是在使用系统调用 gettimeofday() 和寄存器上的观察点时遇到了问题。

首先让我展示一个我在做什么的小例子。

好的,这是我正在使用的代码(非常简单):

好吧,我正在做的只是运行程序(它在 getchar() 函数处停止,直到我按下回车键),然后将程序附加到其他 shell 中的 gdb 会话:

现在我只需在“rdi”寄存器上添加一个条件观察点,以便在分配变量“num”时检查程序的状态:

现在继续在 gdb 上执行程序,并在我正在运行程序的另一个 shell 上按 enter,正如您所见,gdb 就像我想要的那样在观察点停止程序。

好吧,这就是我所期望的版本,一个运行正常的简单应用程序和一个在正确时刻停止的观察点。

好的,现在转到问题本身。

这是我之前使用的相同程序,但不同之处在于我在变量分配之前使用了 gettimeofday():

现在重复我之前做的相同步骤:

- 在 shell 中运行程序

- 将程序附加到另一个 shell 中的 gdb 会话

-在“rdi”寄存器上设置条件观察点

但是现在当我继续在 gdb 中执行并在程序运行的 shell 中按 enter 时,程序就会卡在 gettimeofday() 函数中。

如果我在 gdb 上按“Ctrl+C”,我可以检查程序是否卡在这个函数中

现在,如果我禁用观察点并尝试再次继续执行,一切正常,程序结束没有问题(显然观察点被禁用,gdb 不会在我想要的那一刻停止程序)。

所以我可以验证程序卡住的原因是寄存器中设置的观察点......

所以问题是,有人可以解释为什么会这样吗?而且,有什么办法可以解决这个问题,并且程序不会卡在 gettimeofday() 函数中并到达观察点吗?

PD:我知道我可以使用其他方法在变量分配中停止程序,但这只是一个实验,我只想解释为什么会发生这种情况

PD2:对不起我的英语不好,这不是我的重要语言。