我可以设置一个数据断点在运行时在C系统(或在普通C++)?
题
我有一类的系统-C的一些数据成员为:
long double x[8];
我的初始化它在建设这样的:
for (i = 0; i < 8; ++i) {
x[i] = 0;
}
但我第一次使用它在我的代码我有垃圾存在。
因为这样的系统是建立我不能连接一个调试器容易。是否有任何方法来设置的一个数据断点在代码,以便它告诉我在哪里的代码变量的实际变化,但没有挂钩的一个调试器?
编辑:@Prakash:实际上,这是一个错误 的问题, 但不是在我的代码...谢谢!
解决方案
你可以试着开始的第二线旋转,寻找变化的变量:
#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]);
这将提高SIGTRAP信你的应用程序,只要任何的x值不是零。
其他提示
只是使用 printk/syslog.
它是旧的,但是超级骗子容易。
当然,这将是垃圾!
该代码应该已经作
for (i = 0; i < 8; ++i) {
x[i] = 0;
}
编辑:哎呀,不要低估;)
@弗兰克
实际上,这让我记录的调试打印文件。我在寻找什么东西会让我打印一些东西,每当一个变量的变化,而不我明确地在寻找的变量。
怎么样 有条件的断点?你可以尝试各种条件喜欢的第一个元件价值是零或非零,等等??
这是假设我可以很容易地连接一个调试器。整个的一点是,我只有一个图书馆,但可执行联系起来,它在不是容易获得。
不隶属于 StackOverflow