gpt4 book ai didi

c++ - 我可以在 System C(或 Plain Vanilla C++)的运行时设置数据断点吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:31:52 25 4
gpt4 key购买 nike

我在 system-C 中有一个类,其中包含一些数据成员:

long double x[8];

我在构造中初始化它,如下所示:

for (i = 0; i < 8; ++i) {
x[i] = 0;
}

但是我第一次在代码中使用它时,那里有垃圾。

由于系统的构建方式,我无法轻松连接调试器。是否有任何方法可以在代码中设置数据断点,以便它告诉我代码中变量实际更改的位置,但无需连接调试器?

编辑:@普拉卡什:实际上,这是问题中的拼写错误,但不是我的代码中的拼写错误...谢谢!

最佳答案

您可以尝试启动第二个线程来旋转,寻找变量的变化:


#include <pthread.h>

void *ThreadProc(void *arg)
{
volatile long double *x = (volatile long double *)arg;
while(1)
{
for(int i = 0; i < 8; i++)
{
if(x[i] != 0)
{
__asm__ __volatile__ ("int 3"); // breakpoint (x86)
}
}

return 0; // Never reached, but placate the compiler
}
...
pthread_t threadID;
pthread_create(&threadID, NULL, ThreadProc, &x[0]);

每当任何 x 值不为零时,这都会向您的应用程序发出 SIGTRAP 信号。

关于c++ - 我可以在 System C(或 Plain Vanilla C++)的运行时设置数据断点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com