2011-09-22 18 views
22

Ben çok kanallı proje (kullanarak Libevent) üzerinde gdb 7.3.1 ters hata ayıklama özelliklerini kullanmaya çalışıyorum ama aşağıdaki hatayı alıyorum: this question itibarenÇok iş parçacıklı bir programda ters hata ayıklamayı nasıl etkinleştiririm?

(gdb) reverse-step 
Target multi-thread does not support this command. 

, belki düşünce öyle Ben program çalıştırdığınızda bir sorun, libthread_db yükleme fakat, gdb diyor ki:

Starting program: /home/robb/slug/slug 
[Thread debugging using libthread_db enabled] 
Using host libthread_db library "/lib/libthread_db.so.1". 

nasıl çok kanallı proje üzerinde gdb 7.3.1 ile ters hata ayıklama etkinleştirebilirsiniz? Mümkün mü?

+0

burada benzer bir soruya [link] (http://stackoverflow.com/questions/6625486/reverse-step-multithread-error) söz konusudur. – Martin

+0

Evet, biliyorum, bu soruya kendi başıma bağlandım. – rps

cevap

22

Sen ileriye ve geriye doğru gitmek istediğiniz noktadan komutu

record 

yürüterek, aktif etmek talimat kayıt hedefini ihtiyaç (kayıt anlamlı, özellikle yürütme yavaşlatmak unutmayın birkaç konuları var) Ben sadece düzgün çalışan aldığını gördükten

:

(gdb) info threads 
    Id Target Id   Frame 
    2 Thread 0x7ffff7860700 (LWP 5503) "a.out" hello (arg=0x601030) at test2.c:16 
* 1 Thread 0x7ffff7fca700 (LWP 5502) "a.out" main (argc=2, argv=0x7fffffffe2e8) at test2.c:47 

...

(gdb) next 
49   p[i].id=i; 
(gdb) reverse-next 
47  for (i=0; i<n; i++) 

...

17  printf("Hello from node %d\n", p->id); 
(gdb) next 
Hello from node 1 
18  return (NULL); 
(gdb) reverse-next 
17  printf("Hello from node %d\n", p->id); 
+0

Kayıt yaptığımda hata alıyorum: 'İşlem kaydı hedefi durmaksızın durmaksızın hata yapamaz (durmaksızın). ' –

+4

' non-stop off 've/veya' target-async setini çalıştırmayı deneyin kapalı, bu seçenekler GDB'nin en son sürümlerinde varsayılan olarak doğru olabilir – Kevin

İlgili konular