2008-09-11 23 views
0

Ben gibi bazı veri üyeleri ile sistem-C bir sınıf var:Çalışma zamanında sistem C'de (veya Düz Vanilya C++) bir veri kesme noktası belirleyebilir miyim?

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

Fakat ilk kez kullanmak:

long double x[8]; 

Böyle yapımında başlatılıyor ediyorum kodum orada çöp var.

Sistemin oluşturulma şekli nedeniyle bir hata ayıklayıcısını kolayca bağlayamıyorum. Kodda bir veri kesme noktası belirlemek için herhangi bir yöntem var mı? Kodda değişkenlerin gerçekten değiştirildiğini, ancak bir hata ayıklayıcısını bağlamadan bana nerede olduğunu söyler?

Düzenleme: @Prakash: Aslında bu benim kodunda söz bir yazım hatası olduğunu, ancak ... teşekkürler!

cevap

0

Sen değişkendeki değişiklik olup olmadığına bakmak, spin ikinci iplik başlangıç ​​deneyebilirsiniz: x değerlerden herhangi sıfır olmadığı zamanlardaki


#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]); 

Bu uygulamanıza bir SIGTRAP sinyalini yükseltir.

0

Elbette, çöp olacak!

kod

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

DÜZENLEME olarak olmalıydı: Bir dakika, hafife için üzgünüm;)

0

Sadece printk/syslog kullanın.

Bu eski moda, ancak süper duper kolaydır. @Frank

0

Aslında bu beni bir dosyaya ayıklama baskılar oturum sağlar. Aradığım şey, bir değişkenin değiştiği her şeyi değiştirmeme izin verecek bir şey.

0

Bu, bir hata ayıklayıcısını kolayca bağlayabileceğimi varsayıyor. Bütün mesele şu ki sadece bir kütüphanem var, ama onu bağlayabilen çalıştırılamaz.