Nesen ražošanas vidē tika izvietots projekts, un tika atklāts, ka dažas metodes izmeta anomālus ziņojumus
Tomēr tiek sniegta tikai neparasta informācija par kļūdām, un nav neparasta rindas numura, tikai tas, ka ir problēma ar modeļa konvertēšanu noteiktā metodē
Bet ļaujiet man tos salīdzināt pa vienam, tas ir pārāk kaitinoši, kāpēc gan neierakstīt nepareizu rindas numuru?
log4net žurnāla konfigurācija ir šāda:
Es apzināti uzrakstīju izņēmuma ziņojumu mājas / indeksa metodē savā lokālajā datorā, lai redzētu, vai rindas numurs tiks ierakstīts:
Es atklāju, ka kļūdu žurnālfailā tiks ierakstīts rindas numurs, kas noteikti nav problēma ar log4net konfigurāciju, jo konfigurācija abās pusēs ir vienāda
Vai tā varētu būt problēma ar kompilācijas režīmu???
Mans lokālais dators ir atkļūdošanas režīmā, un oficiālā servera sastādītais dll ir izlaišanas režīmā
Tad es nomainīju vietējo projektu uz izlaišanas režīmu un atklāju, ka tas joprojām ir ieraksta rindas numurs.
Tad, Baidu, pirmais teikums:Jums jākopē .pdb fails, kas atbilst dll”
Nu, vai tā ir problēma? Pēc tam es devos tieši uz bin direktoriju, izdzēsu .pdb failu, kas atbilst dll, un pēc tam atsvaidzināju vietni, un atradu izņēmumu žurnālu šādi:
Protams, neparastais līnijas numurs netiek reģistrēts!!!!
Vai tā tiešām ir .pdb problēma! .pdb fails ir jāsaglabā tā, lai rindas numurs tiktu ierakstīts, ja tas ir nenormāls!!
Kam paredzēts PDB fails?
PDB faili: kas jāzina katram izstrādātājam
Kas ir PDB fails?
Lielākajai daļai izstrādātāju jāzina, ka PDB faili tiek izmantoti, lai palīdzētu programmatūras atkļūdošanai. Bet kā tieši viņš darbojas, mēs, iespējams, neesam pazīstami. Šajā rakstā ir aprakstīta PDB failu glabāšana un saturs. Tajā arī aprakstīts, kā atkļūdotājs atrod PDB failu, kas atbilst binay, un kā atkļūdotājs atrod avota koda failu, kas atbilst binay. Šis raksts ir paredzēts visiem vietējiem un pārvaldītajiem izstrādātājiem.
Pirms sākam, definēsim divus terminus: privāta būve, ko izmanto, lai apzīmētu izstrādātāja datorā ģenerētu būvējumu; publiskā būvēšana, kas nozīmē būvējumu, kas ģenerēts publiskā būvēšanas mašīnā. privātā būvniecība ir salīdzinoši vienkārša, jo PDB un binay atrodas vienā vietā, un parasti problēmas, kas mums ir, ir saistītas ar publisko būvniecību.
Vissvarīgākais, kas jāzina visiem izstrādātājiem, ir tas, ka "PDB faili ir tikpat svarīgi kā avota kods", bez kura jūs pat nevarat atkļūdot. Publiskai būvēšanai simbolu serverim ir jāglabā visi PDB, un tad, kad lietotājs ziņo par kļūdu, atkļūdotājs var automātiski atrast atbilstošo PDB failu binay, un gan Visual Studio, gan Windbg zina, kā piekļūt simbolu serverim. Pirms PDB un binay glabāšanas simbolu serverī, jums ir nepieciešams arī avota indekss PDB palaist, kas ir saistīt PDB un avotu.
Nākamajā daļā tiek pieņemts, ka simbolu serveris un avota servera indeksēšana jau ir iestatīti. TFS2010 var izdarīt tikpat vienkārši kā avota indeksēšanu un simbolu servera kopēšanu jaunai būvei.
2) PDB faila saturs
Oficiāli sākot PDB saturu, PDB nav publiski pieejams faila formāts, bet Microsoft nodrošina API, lai palīdzētu iegūt datus no PDB.
Vietējais C++ PDB satur šādu informāciju: * publiskās, privātās un statiskās funkciju adreses; * Globālā mainīgā nosaukums un adrese; * Parametru un vietējo mainīgo nosaukumi un nobīdes uz steka; * klases, struktūras un datu tipa definīcijas; * Kadra rādītāja izlaišanas dati, lai šķērsotu vietējo steku x86; * Nosaukums un rindu skaits avota koda failā;
.NET PDB satur tikai 2 informācijas daļas: * Avota koda faila nosaukums un rindu skaits; * un vietējā mainīgā nosaukums; * Visi pārējie dati jau ir iekļauti . NET metadati;
|