Vous pouvez essayer de faire ce que j'ai fait sous * NIX une fois.
Vérifiez le .c
généré à partir de votre .xs
, notez le nom de la fonction xsubpp
a donné votre fonction. Ouvrez le Perl dans le débogueur et définissez le point d'arrêt à la fonction avec le nom. Le débogueur se plaindrait que le symbole n'est pas encore visible et que le point d'arrêt serait résolu lors du chargement des bibliothèques partagées. Maintenant, essayez d'exécuter le Perl avec votre script en tant que paramètre. Si tout cela fonctionne, alors le débogueur résoudrait correctement le nom du symbole lorsque XS est chargé par Perl.
Dans certains débogueurs, il existe des problèmes avec ces symboles résolus ultérieurement. Contournement consiste à ajouter dans le script après use your::custom::xs;
un appel à un système rare ou un appel de bibliothèque standard (j'utilise souvent le getpid()
). Définissez le point d'arrêt sur la fonction rare. Démarrez Perl et attendez qu'il arrive au point d'arrêt lors de l'appel rare. Votre XS devrait déjà être chargé et ses symboles visibles pour le débogueur. Définissez le point d'arrêt sur la (les) fonction (s) que vous souhaitez déboguer.
Sinon, sachez que vous ne devez pas mettre trop de logique dans le XS. XS est destiné à n'être qu'une couche de colle et doit donc rester mince. Si l'utilisation de votre XS nécessite une logique supplémentaire, mettez-la dans le .pm
qui aurait déjà été généré automatiquement par le h2xs
pour votre XS dans le sous-répertoire lib/
.
Espérons que ça aide.