JeuxOnLineForumsPlusConnectés : 257 (sites) | 401 (forums)Créer un compte
Forum jeux-vidéo>Neverwinter Nights
Maskado
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [Reflexion] SpawnScriptDebugger RSS
   
Répondre
Partager Outils Rechercher
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 

[Reflexion] SpawnScriptDebugger

Dans la 1.30, ya un truc nouveau, c'est le ScriptDebuggeur ou DebugServer.exe.
Franchement, plus j'essaie de l'utiliser et plus je trouve ça excellent même si j'ai pô vraiment tout bien pigé
Je viens de faire quelques tests, voilà ce qu'il en est:


Donc la première chose à faire est de cocher "Génère le Debug Information blabla" dans Outils/Options/Éditeur de scripts de l'édtieur.
Ensuite on met la fonction SpawnScriptDebugger dans le script que l'on souhaite débugger.
Voici mon script de test:
Code PHP:
void AinsiFontFontobject oPCint nVar) {
    return;
    }

void main() {
    
SpawnScriptDebugger();
    
object oPC GetLastUsedBy();
    
int nVar Random1000);
    
AinsiFontFontoPCnVar);
    } 

Donc avant de tester le module et bien entendu notre script, il faut démarrer le petit programme DebugServer. Ce programme se trouve dans le dossier utils.
Il n'y a véritablement rien à configurer. Laissez sur "On" et ne changez pô le port qui doit être différent de votre serveur, ce qui laisserait penser d'ailleurs que le debug est possible à distance...

Nous sommes donc prêt à tester notre module.
En solo, j'ai essayé et lorsque la fonction s'execute, une fenètre apparait vous demandant de basculer sur le programme de debug mais malheureusement mon écran reste figé sur ma partie.
Donc le mieux est d'essayer avec nwserver et de s'y connecter en local.

J'active le levier, la fonction SpawnScriptDebugger s'execute. À ce moment je remarque que le serveur est en "stand-by", il reste figé comme si il était tombé en panne.
Je bascule donc sur le programme de debug et voici ce que j'ai:
[IMG]http://******************/skanzo/images/scriptdebug.jpg[/IMG]

Il me donne la valeur de chaques variables pendant l'execution du script, la preuve avec mon Random. Perso, je trouve ça magique
On passe d'une ligne de code à l'autre en cliquant sur "passer" mais par contre quand on clique sur "entrer", il se passe pô grand chose.

Donc voilà, je vous invite à réflechir la-dessus, trouver des trucs sympô, des utilisations pratiques, des templates de scripts ou même cracker le code source gniarf gniarf :bouffon:

Je continu quelques tests
Lien direct vers le message - Vieux
Avatar de eMRaistlin
eMRaistlin
Alpha & Oméga
 
Avatar de eMRaistlin
 
vivement que je passe a la 1.30...
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Citation:
Il me donne la valeur de chaques variables pendant l'execution du script
C'est réellement une éxecution pas à pas du script. Le programme de Debug ne lira pas les conditions fausses et repassera autant de fois qu'il le faut dans un boucle.
Pratique pour suivre l'acheminement d'un script.

Par contre, et dans un sens c'est peut-être préférable, il executera directement une fonction mais ne vous emmenera pô voir la bibliothèque où elle se trouve.

Je continu les tests
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Citation:
Par contre, et dans un sens c'est peut-être préférable, il executera directement une fonction mais ne vous emmenera pô voir la bibliothèque où elle se trouve.
C'est à moitié faux

Vous pouvez voir l'exécution d'une de vos fonctions à condition que cette fonction se trouve dans le même script et de cliquer sur "Entrer" au bon moment.

Exemple:
Dans le script de test que j'ai utilisé précédemment, au moment où AinsiFontFont est en rouge (exactement comme sur l'image), il suffit de cliquer sur "Entrer" et ainsi on peut passer en revue l'exécution de la fonction AinsiFontFont elle-même.

Dans la partie la plus en bas du debugger, on aura même le droit d'avoir les valeurs renseignées dans la fonction. Dans l'exemple, on aura les valeurs de oPC et nVar.
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Hmmm... J'ai beau réfléchir, j'ai du mal à me souvenir d'un aussi beau cadeau de la part de Bioware

Grâce à ça, il est 100% plus facile de débugger des scripts, même si ça devient par la même occasion un peu plus fastidieux.
Les erreurs d'étourderies, les plus courantes généralement , sont balayées en un passage du débuggeur

Les newbies n'ont plus aucune raison de se plaindre que leurs scripts ne marchent pas maintenant Dorénavant, je ne répondrais plus à personne possédant une version 1.30 ou supérieure
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Visiblement, les bibliothèques peuvent quand même être affichées.

J'ai essayé un SpawnScriptDebugger dans un script utilisant les ressources d'une bibliothèque, du genre #include "magic_lib".

Il y a dans cette bibliothèque des constantes. Pour les voir, il suffit d'un double-clic en bas du debugger là ou c'est marqué "#globals" et zou, il vous emmène à la dernière constante à l'intérieur de la biblio.

Il vous fait même un topo de toutes les constantes trouvées


Tout ça me fait penser qu'il devrait y avoir un moyen d'aller voir l'exécution d'une fonction ailleurs que dans le même script.
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
J'ai oublié de préciser que les scripts doivent obligatoirement être compilé mais ça la description de la fonction le dit déjà
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Comme tu dis Taern, va falloir qu'on mette "Et le Debugger, c'est pô pour les chiens!" en signature
Lien direct vers le message - Vieux
Avatar de RAT
RAT
Alpha & Oméga
 
Avatar de RAT
 
Loool c tip cool ca

Je connais très bien ce genre de debug, il me fait penser sur le progiciel ou je bosse, c'est le même style de debug, je ne vais pas trop être dépayser lol



Merci Skanzo
Lien direct vers le message - Vieux
Avatar de 'Az
'Az [P.H.]
Alpha & Oméga
 
Avatar de 'Az
 
Cool ca, finis mes 20 lignes de :
SendMessageToPC(GetFirstPC(), IntToString(nTruc));
maintenant plus qu'a afficher la fenetre

et encore une raison d'aimer la 1.30


Citation:
Donc voilà, je vous invite à réflechir la-dessus, trouver des trucs sympô, des utilisations pratiques, des templates de scripts ou même cracker le code source gniarf gniarf
boaf, la je crois pas que ca va nous avancer a ce niveau la
Lien direct vers le message - Vieux
Avatar de Jedaï
Jedaï
Alpha & Oméga
 
Avatar de Jedaï
 
Aaahh ils ont enfin fait une copie de gdb pour NWN (euh, ok,c'est une pale copie, un peu insubstancielle même), ça c'est génial !! C'est excellent pour débugguer de gros script bien lourd !!!!!!!
Bon, maintenant ils nous rajoutent un bon préprocesseur (ou à la limite un compilateur qui optimise correctement les constantes nouvellement apparue en 1.30) et nous aurons un vrai outil de scripting entre les mains avec le débogueur et le compilateur en ligne de commande.
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Dans le dossier /utils, le debugger laisse un log de tous les debugs effectués.
Dans ce style là:
Code PHP:
------------------------------
01/07/2003 18:26:14
Message Type    
G
Message Window  
1
Message Command 
L
Component 0 
3
Component 1 
object oPC GetLastUsedBy();
------------------------------
01/07/2003 18:26:14
Message Type    
G
Message Window  
1
Message Command 
L
Component 0 
4
Component 1 
SendMessageToPCoPC"OK");
------------------------------
01/07/2003 18:26:14
Message Type    
G
Message Window  
1
Message Command 
L
Component 0 
5
Component 1 
AssignCommandoPCPlayAnimationANIMATION_FIREFORGET_PAUSE_SCRATCH_HEAD)); 
Lien direct vers le message - Vieux
Avatar de Skanzo Sylan
Skanzo Sylan
Empereur
 
Avatar de Skanzo Sylan
 
Citation:
Tout ça me fait penser qu'il devrait y avoir un moyen d'aller voir l'exécution d'une fonction ailleurs que dans le même script.
Ben vi, en plus c'est possible


J'ai essayé le script du début mais avec include comme ceci:
Code PHP:
#include "inc"

void main() {
    
SpawnScriptDebugger();
    
object oPC GetLastUsedBy();
    
int nVar Random1000);
    
AinsiFontFontoPCnVar);
    } 
AinsiFontFont se trouvant dans le script "inc".

Et en cliquant sur "Entrer", je vais bien voir l'execution de la fonction directement dans la biblio


Auparavant, je pensais que c'était pô possible tout simplement parce que j'essayais avec une fonction se trouvant dans un AssignCommand.

C'est donc possible de faire "Entrer" sur une fonction mais à condition que celle çi ne soit pô dans un AssignCommand, peu importe où elle se trouve (biblio ou script même).

Voilà
Lien direct vers le message - Vieux
Avatar de Taern
Taern
Alpha & Oméga
 
Avatar de Taern
 
Oui effectivement, quand on fait "entrer", on voit le détail de la fonction ligne-à-ligne, alors que "passer" exécute la ligne du programme d'origine sans aller voir plus loin.

Bon, personnellement j'aurais bien aimé une fonction "avance rapide" mais y'a peut-être moyen d'y arriver avec "Goto break"

Ah, dernière chose qui va pas plaire à Jedaï, y'a un ptit bug avec les structures : dans l'affichage des variables en bas du débuggeur, les structures sont représentées sous la forme d'arborescence qui devraient pouvoir être rétractées, or on ne peut pas les fermer en double-cliquant dessus Oui, c'est gênant, quand y'a 5 vecteurs dans un script
Lien direct vers le message - Vieux
Avatar de MadCat
MadCat
Dauphin
 
Avatar de MadCat
 
question
Citation:
C'est réellement une éxecution pas à pas du script.
Y'a pas moyen de mettre des points d'arrêts ou des conditions d'arrêt ?
Sur de long script ou des boucles ça peux se révéler fastidieux de faire du pas à pas :baille:
Lien direct vers le message - Vieux
Répondre
Les forums JOL > Forum jeux-vidéo > Neverwinter Nights > NWN - Maskado > [Reflexion] SpawnScriptDebugger
   

Outils Rechercher
Rechercher:

Recherche avancée

Les vidéos de Neverwinter Nights RSS
  • Aucune vidéo pour le moment...
Thème visuel : Fuseau horaire GMT +1. Il est actuellement 07h06.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite