2010-01-06 7 views
7

J'ai une application Windows Delphi qui meurt horriblement sous Wine - ne parvient même pas à créer le formulaire principal. Portage à Free Pascal n'est pas une option pour diverses raisons. Est-ce que je peux déboguer sous Wine en utilisant les moyens natifs de Delphi? Si ce n'est pas le cas, puis-je déboguer sous Wine en utilisant gdb, et si oui, comment puis-je transmettre les informations de débogage au format Delphi (Turbo Debugger probablement) à gdb?Débogage d'une application Delphi sur Wine

Enfin, comment puis-je détecter Wine à partir d'un programme? La FAQ sur les vins dit que je ne devrais pas, mais je ne pense pas que la correction de mon application soit prioritaire sur la liste des priorités de Wine, alors je préfère prendre les choses en main.

Je n'ai pas écrit l'application, mais j'ai les sources et une copie de Delphi.

Répondre

1

Vous pouvez être en mesure d'obtenir le débogueur distant pour se connecter à l'application Wine (jamais essayé), mais cela demande beaucoup de vin.

La première chose que j'essayerais est d'utiliser un utilitaire de traçage de pile comme les extensions de débogage JCL. Une trace de pile peut vous fournir suffisamment d'informations pour résoudre le problème sans avoir à faire fonctionner le débogage sous Linux.

+0

Ce n'est pas sans rappeler le débogage basé sur printf() des années passées :) Ce qui est une option, je l'admets. Juste pas agréable. –

+0

En tant qu'outil de débogage, oui. Comme un moyen d'obtenir des post-mortem des clients ou d'autres cas qui peuvent être difficiles à reproduire, c'est inestimable. –

+0

En ce moment, mon ambition est plus humble: commencer par montrer que la fenêtre principale est suffisante. :) Et l'application est freeware, donc le support client rigoureux n'est pas à mon agenda. Merci pour le lien si. –

2

Je crois que vous devriez être en mesure de déboguer avec gdb, mais je ne sais pas comment vous y alimenter toutes les sources Delphi. Vous devez inclure toutes les informations de débogage dans votre fichier EXE (y compris le débogueur externe) pour commencer.

Je vous recommande d'utiliser un utilitaire de journalisation prenant en charge la connexion via TCP/IP. Deux bons sont SmartInspect et CodeSite. Combinez ceux avec un utilitaire de traçage de pile comme le fournit le JCL et vous pourriez trouver que c'est une meilleure solution que d'attacher le débogueur de toute façon.

Bonne chance pour la détection de vin bien. Je serais curieux de voir ce que vous proposez. Il semble que ce devrait être possible cependant.

0

Si vous avez le code source, recompilez-le avec un tas de messages de débogage et essayez de l'exécuter comme vous le feriez sur Windows.

Wine a beaucoup d'API qui ne sont pas implémentées et vous pouvez avoir de la chance en installant des paquets supplémentaires au hasard avec des winetricks. J'ai eu un problème similaire en utilisant le vin avec notre application Delphi, j'avais besoin d'installer le gestionnaire ODBC, qui ne vient pas par défaut avant que je puisse faire fonctionner le truc.

+0

Oh, j'ai lu votre commentaire et vous n'êtes pas trop intéressé par le débogage printf, eh bien. Ce n'est probablement que 1 ou 2 choses qui empêchent votre logiciel de s'initialiser, cela en vaut probablement la peine. –

+0

Eh bien, s'il n'y a pas de meilleure option, alors printf() l'est.J'espérais juste que le wizdom collectif de StackOverflow avait une meilleure solution. –

+0

Y a-t-il une grande liste d'API non implémentées? –