2016-01-14 20 views
8

Background:gerarchia di richiamo da una certa funzione

Lavorando in Eclipse, ho due funzioni: fai_qualcosa e perform_task. So che do_something chiama un numero di altre funzioni che a loro volta chiamano altri (e così via e così via) e da qualche parte lungo la linea perform_task viene chiamato anche.

Poiché questo è un grande progetto, un sacco di flussi e così via, ho già trovato due sequenze differenti dove fai_qualcosa attiva perform_task attraverso qualche altra sequenza di funzioni.

Actuall domanda:

C'è un modo in Eclipse per ottenere la gerarchia di richiamo di una certa funzione, ma solo sequenze che includerà anche una certa altra funzione nella sequenza?

Pensando a questo in termini di percorsi grafico, abbiamo un grafo orientato, e invece di chiedere quali sono i percorsi al nodo x, voglio sapere quali sono i percorsi per nodo x che includono nodo y.

+0

Si può provare ad aggiungere un punto di interruzione condizionale all'interno della funzione e come condizione si può scrivere qualcosa come Thread.currrentthread(). Getstacktraceelements contiene xyzyourclass.yourmethod – guleryuz

+0

@guleryuz - grazie per l'idea, ma nel mio caso che semplicemente è non un'opzione. Inoltre, la tua idea coprirà una opzione (quella 'Thread.currentthread()'), dove sto cercando di ottenere informazioni su tutte le opzioni ... –

+0

è possibile scrivere alcuni unittest e prendere in giro la funzione perform_task per coprire tutti le situazioni di sequenze – realhu

risposta

2

Non è esattamente quello che stai chiedendo, ma potrebbe essere abbastanza utile:

Nel Gerarchia di richiamo vista, c'è un'opzione per mostrare le callees del metodo scelto al posto dei chiamanti. Guarda la barra degli strumenti della vista di Call Hiearchy per i due pulsanti che rappresentano i punti verdi collegati alle linee; quel pulsante commuta tra le due modalità.

enter image description here

Se si seleziona do_something e aprire la Gerarchia di richiamo vista su di esso, quindi impostare la modalità di Visualizza callees si potrebbe essere in grado di esplorare i diversi percorsi su do_something che portano a perform_task.

+0

Anche se questo potrebbe aiutare un po ', non è esattamente quello che sto cercando ... –

Problemi correlati