Debugolás fejlesztőkörnyezet nélkül

Egy házi keretében egy egyszerű kis szerver-kliens alkalmazást írok .NET 3.0-ban, ami Windows Communication Foundation (WCF) szolgáltatásokat használ a kommunikációhoz. Kész van az alkalmazás váza, a fejlesztői virtuális gépen (Orcas Beta1) ment minden jól, gondoltam, itt az idő kipróbálni tesztrendszerben (Windows Server 2003-as tartományvezérlő  és egy Windows XP), hogy még az elején derüljön ki, ha valamire nem gondoltam. A kliens indításakor azonban a következő hibát kaptam:

Google-ban rákeresve olyan fórum bejegyzéseket találtam, akiknél a gondot az okozta, hogy hiányzott valami DLL, amire a program hivatkozott. Dependancy Walkerrel megnéztem a hivatkozott DLL-eket, elvileg megvolt minden a kliensen is. A biztonság kedvéért még az IL Disassembler (ildasm.exe) is ránéztem a Manifest fájlra, és minden hivatkozott DLL-nek megfelelő verziója volt meg.

Úgyhogy a továbbhaladáshoz szükség lett volna a kivétel részleteire is, mert a jelen ablak nem túl informatív. Nézegettem, de a .NET Framework redistributable verziója nem tartalmaz debugger-t, ahhoz legalább az SDK-ra lenne szükség. No de csak lehet már valahogy SDK telepítés nélkül is hibát keresni, pl. éles rendszerben nagyvállalati környezetben nem lehet csak úgy felpakolni mindenfélét.

Találtam egy régebbi cikket (Production Debugging for .NET Framework), de itt is az SDK eszközeit (cordbg, clrdbg), Visual Studio-t vagy a Debugging Tools for Windows-t (abból is az Autodump+ eszközt) emlegették. Megnéztem a 3.0-s SDK-ban (új nevén most már Windows SDK) lévő eszközöket, azonban pl. dokumentációban a debugging eszközök leírása jelenleg még üres:), a cordbg, amire hivatkoznak a régi cikkek, hogy viszonylag könnyű telepíteni, nincs már benne.

Végül itt találtam meg, hogy miért nincs már cordbg: leváltotta az MDbg. Ami jól hangzott az MDbg-ben az az, hogy simán külön letölthető. Ugyan csak forrásban, és kell egy SDK-s vagy Visual Studio-s gép a lefordításához, mert használ néhány csak az SDK-ban lévő plusz eszközt a fordító és az MSBuild mellett, de gyors fordítás után végre a kezemben volt egy debugger, amit nem kell telepíteni. Az MDbg-ből elidítva az alkalmazást rögtön meg is volt a hiba oka:

mdbg> r C:\ImageDistributer\Release\ImageDistributerClient.exe
STOP: Unhandled Exception thrown
Exception=System.SystemException
_className=<null>
_exceptionMethod=<null>
_exceptionMethodString=<null>
_message="The trust relationship between this workstation and the primary domain failed."

IP: 462 @ System.Security.Principal.NTAccount.TranslateToSids – MAPPING_EXACT

Azaz, a kód elején volt egy rész, ahol csoporttagságot ellenőriztem, és itt a név – SID lekérdezéshez, mivel tartományban van a gép, a tartomány vezérlőhöz akart fordulni, azonban azt nem érte el.

Tanulság: ha nem akarunk / tudunk telepíteni a gépre, viszont szükség van a nem kezelt kivétel részleteire, akkor az MDbg segíthet.

Advertisements
Kategória: Tech | Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s