2009-07-20 5 views
0

Je vois parfois une "congélation" momentanée (une fois sur cinq), momentanée (5-10 secondes), lorsqu'elle fait glisser — éventuellement dans le cadre du rappel -startcommand. Cela n'arrive jamais à la première traînée.Comment puis-je savoir pourquoi mon action glisser se bloque momentanément en Perl/Tk?

Le rappel est assez simple; il définit simplement le texte du glisser le curseur sur la valeur qui est déplacée:

sub DragStart { 
    my($token) = @_; 

    my $w = $token->parent; 
    my $e = $w->XEvent; 

    my $idx = $w->nearest($e->y); 
    if(defined $idx) { 
    $token->configure(-text -> $w->get($idx); 
    my($X, $Y) = ($e->x, $e->y); 
    $token->MoveToplevelWindow($X, $Y); 
    $token->raise; 
    $token->deiconify; 
    $token->FindSite($X, $Y, $e); 
    } 
} 

Je ne peux pas empêcher de se demander si le problème est en dehors de mon code, donc ce que je voudrais faire est de trouver un moyen d'identifier quel sous-programme est actuellement appelé lorsque le gel se produit.

Existe-t-il un tel outil? Quelque chose qui montre une pile d'appels en temps réel le ferait, s'il y en a un.

Répondre

2

Vous devez exécuter votre application via l'un des débogueurs de Perl.

Puisque vous êtes une personne de savoir traditionnel, vous pouvez essayer Devel::ptkdb ou vous optez simplement pour la norme Perl debugger.

+0

Devel :: ptkdb est exactement ce que je cherchais. Je vous remercie. – Trueblood

Questions connexes