Je suis fréquemment chargé de déboguer une application à mon travail. Il s'agit d'une application BI que nous déployons dans les entreprises, qui comprend un environnement de test et un environnement de production. Je me demande s'il existe des applications / outils / méthodes que les gens peuvent suggérer, en fonction de ces contraintes:
Le débogueur ne peut pas être utilisé sur le site client ou localement, car le logiciel dépend d'applications tierces personnalisées pour lesquelles nous n'avons pas d'environnements de test. (EDIT: pour être honnête, il est possible de déboguer localement dans certains cas. Si nous n'utilisons que le code de base. Une grande partie du code problématique réside dans une DLL qui encapsule la communication spécifique de tiers: sockets, processus, tuyaux, appels de savon, logique personnalisée qui modifie le comportement du code principal. Généralement, lors d'une implémentation ou d'une amélioration pour un client, nous écrivons du nouveau code dans cette zone.)
Il n'y a pratiquement aucune journalisation effectuée dans nos applications. Il n'y a pas de tests unitaires.
Le contrôle de version ne comporte qu'une seule version de la solution complète (en utilisant Source Safe 2005). Il n'est donc pas possible d'obtenir une version précédente de la solution entière, uniquement des fichiers individuels. (Sauf si quelqu'un sait comment contourner cela).
Ne peut pas se reproduire localement, souvent les temps ne peuvent pas se reproduire sur l'environnement de test (Fortes chances que le test et la production ne soient pas la même version).
Il est fort probable que la version utilisée par le client soit différente de celle du coffre-fort à la source. Cela est dû au fait que les fichiers individuels sont mis à jour, qui ont incorporé une logique personnalisée pour ce client spécifique. Souvent, ce qui se passe, c'est qu'une mise à jour est effectuée sur un binaire, ce qui nécessite des modifications dans plusieurs autres fichiers binaires, mais lorsqu'une validation est effectuée, personne n'a aucun enregistrement ou connaissance de cela. Une erreur quelque peu courante que je vois est la «fonction / méthode non trouvée» ou «l'appel de méthode a trop / trop peu de paramètres spécifiés» sur un environnement client.
Ceci est une solution .net VB
Impossible d'installer un logiciel sur les sites clients, mais peut localement
Notre application est extrêmement personnalisable, mais malheureusement, la logique de personnalisation est répartie sur toutes les classes et tous les fichiers, depuis le front-end jusqu'à la couche de données, y compris les modifications personnalisées apportées à la base de données client par client.
Il n'y a pratiquement aucun commentaire dans le code. Il n'y a aucune documentation sur l'architecture. Aucune documentation sur l'API. La seule chose que nous avons, ce sont des centaines et des centaines de chaînes de messagerie qui expliquent quelque peu ce qui se passe. Les seules personnes qui connaissent le code sont celles qui l'ont écrit à l'origine, mais elles ne sont plus des développeurs, donc elles ne s'impliquent pas beaucoup.
Et avant de le dire ... oui je sais; Je veux aussi me tirer dessus. Cela n'aide pas qu'il y ait du code spaghetti, des centaines d'avertissements du compilateur et un polymorphisme cassé qui devraient VRAIMENT être corrigés, mais je n'ai pas mon mot à dire.
Les erreurs les plus courantes que je rencontre sont des erreurs de référence nulles, des transtypages invalides et des incompatibilités de fonctions / signatures de fonctions manquantes. Parfois, j'ai de la chance et l'observateur d'événements enregistrera la classe, la méthode et le message d'exception. Ce n'est pas le plus utile, mais c'est quand même quelque chose. Les pires sont les erreurs qui n'ont aucune trace, aucune étape de repro à part une capture d'écran, et sont des messages d'erreur génériques comme ceux mentionnés ci-dessus. Parfois, il n'est pas possible de savoir pourquoi ils se sont produits, mais seulement de prier pour que l'environnement ne soit pas correctement configuré et qu'il disparaisse plus tard.
Je sais que cela se présente comme une sorte de diatribe, et dans une certaine mesure c'est le cas. Mais je cherche désespérément des options. Y a-t-il d'autres méthodes / outils que je peux utiliser?