Domanda terminologica: generalizzare Heisenbug

0

Esiste qualche tipo di generalizzazione dell'effetto chiamato Heisenbug? Perché vorrei descrivere nella mia documentazione come strumentare un programma cambia l'esecuzione indipendentemente da cosa.

In Il dizionario del nuovo hacker è definito come segue:

heisenbug /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics]

A bug that disappears or alters its behavior when one attempts to probe or isolate it. (This usage is not even particularly fanciful; the use of a debugger sometimes alters a program's operating environment significantly enough that buggy code, such as that which relies on the values of uninitialized memory, behaves quite differently.) Antonym of Bohr bug; see also mandelbug, schroedinbug. In C, nine out of ten heisenbugs result from uninitialized auto variables, fandango on core phenomena (esp. lossage related to corruption of the malloc arena) or errors that smash the stack.

In realtà si tratta di un problema generale, quando si tenta di osservare lo stato dei programmi tramite strumentazione (tracciamento, debug, ecc.) l'esecuzione del programma viene modificata indipendentemente da cosa. Ma la definizione di Heisenbug dice chiaramente che si tratta di un bug mascherato a causa del debug e che scompare. Per quanto riguarda i bug, che appaiono a causa del debug - non c'è una parola per questo.

C'è qualche tipo di generalizzazione, come principio Heisenbug ?

    
posta platzhirsch 16.07.2011 - 13:10
fonte

2 risposte

2

Il termine Heisenbug è già una generalizzazione - di alcuni tipi speciali di bug che sono menzionati nell'articolo citato. Il caso opposto in cui un errore si verifica solo durante il debug e scompare nel normale funzionamento potrebbe anche essere considerato un Heisenbug, se si definisce:

  • Un software contiene un Heisenbug se il software produce risultati diversi nel normale funzionamento e durante il debug e uno di questi risultati non è voluto.
risposta data 16.07.2011 - 14:38
fonte
1

> E i bug, che appaiono a causa del debug - non c'è una parola per questo.

Questo è un "artefatto".

(Esempio: stavo eseguendo il debug di un codice contenente un iteratore (noto bene) utilizzando Microsoft VC ++ e ho definito nella finestra di controllo n = it.next() , che ha causato l'iteratore svuotarsi e iniziare a generare strane eccezioni. non sapevo che il codice Watch non veniva chiamato in modo intelligente solo quando dovevo ispezionare il valore, ma ogni passo di debug, e non memorizzava i valori nella cache e li passava al programma, quindi stava esaurendo il mio iteratore al doppio -speed.)

> Esiste qualche tipo di generalizzazione, come il principio di Heisenbug?

Non che io sappia. Non determinismo, artefatti, sensibilità alle condizioni esterne descrivono questo comportamento generale.

Potresti rititare la tua domanda Domanda terminologica: generalizzare Heisenbug

    
risposta data 16.07.2011 - 21:29
fonte

Leggi altre domande sui tag