Cod de eroare în MS Visual Studio 2005 în RELEASE de configurare

Am un spațiu de lucru pentru a rula un encoder video H.263 într-o buclă de 31 de ori adică principalul este executat de 31 de ori pentru a genera 31 de fluxuri de biți codificate diferite. Acest spațiu de lucru MS Visual Studio 2005 are toate fișierele sursă C. Când creez o configurație "DEBUG" pentru spațiul de lucru și o construiesc și o execută, rulează bine, adică generează toate cele 31 de fișiere de ieșire cum era de așteptat. Dar când am setat configurația spațiului de lucru la "RELEASE" mdoe și repet procesul, codificatorul se blochează la un anumit test.

Acum, pentru a depana aceasta este verificată după cum urmează:

  1. Analiza codului pentru a vedea dacă în fiecare rulare a codificatorului a fost pierdută orice inițializare variabilă
  2. Verificați diferitele opțiuni de lucru (Soluție) în ambele moduri (DEBUG și RELEASE).

Există unele diferențe evidente, dar am transformat opțiunile legate de optimizare în mod explicit în ambele moduri.

Dar totuși nu a reușit să pună problema și să găsească o soluție pentru asta. Orice pointeri?

-Ajit.

0
fr hi bn

7 răspunsuri

Sunteți sigur că nu există directive precompilate care, de exemplu, ignoră un cod cu adevărat important în modul Release, dar le permite să le execute în Debug?

De asemenea, ați implementat orice înregistrare care ar putea să indice ansamblul precis care aruncă eroarea?

0
adăugat

Da, acele prăbușiri bastarde sunt cele mai greu de rezolvat. Din fericire, există câțiva pași pe care îi puteți face, care vă vor da indicii înainte de a reveni la analizarea manuală a codului și speranța de a găsi acul.

Când se prăbușește? La fiecare test? La un anumit test? Ce face acel test ca ceilalți nu fac asta?

Care este eroarea? Dacă este vorba despre o încălcare a accesului, există un model în care se întâmplă acest lucru? Dacă adresele sunt scăzute, ar putea însemna că există un indicator neinitializat undeva.

Este programul crashing cu configurarea Debug, dar fără debugger atașat? Dacă este așa, este cel mai probabil o problemă de sincronizare a firului, după cum a subliniat John Smithers.

Ați încercat să rulați codul printr-un analizor, cum ar fi Purify? Este lent, dar merită de așteptat.

Încercați să depanați oricum configurația de lansare. Acesta va anula numai ansambluri, dar vă poate da încă o indicație a ceea ce se întâmplă, cum ar fi în cazul în care pointer codul sare în mijlocul gunoiului sau atinge un breakpoint într-o bibliotecă externă.

Sunteți într-o arhitectură Intel? Dacă nu, urmăriți erorile de aliniere a memoriei, acestea se blochează fără avertisment pe unele arhitecturi, iar algoritmii codec tind să creeze aceste situații foarte mult, deoarece sunt optimizați prea mult.

0
adăugat

Puteți adăuga simbolurile de depanare la versiunea de construire și rulați-o în depanator pentru a vedea unde și de ce sa prăbușit?

0
adăugat

O problemă interesantă .. Sunteți sigur că nu aveți un cod de compilare cu condiție în jurul valorii de care nu este compilat în modul de eliberare? adică:

#if (DEBUG)
// Debug Code here
#else
// Release Code here
#endif

Acesta este singurul lucru pe care mă pot gândi cu adevărat .. Nu am experimentat niciodată așa ceva.

0
adăugat

M-aș uita la accident în detaliu - dacă se prăbușește într-un caz de testare, atunci sună destul de ușor de reprodus, ceea ce este de obicei cea mai mare provocare.

0
adăugat

Este greu de spus ce ar putea fi problema fără a inspecta cu atenție codul. In orice caz...

Una dintre diferențele dintre versiunile de depanare și de lansare este modul în care este setat cadrul de stivă pentru apelurile funcției. Există anumite clase de lucruri rele pe care le puteți face (cum ar fi apelarea unei funcții cu un număr greșit de argumente) care nu sunt fatale într-o construcție de depanare, ci se prăbușește groaznic într-o ediție construită. Poate că ați putea încerca să modificați opțiunile legate de stivă în cadru (am uitat ceea ce sunt numite, îmi pare rău) în versiunea construiască la fel ca și depanarea construi și a vedea dacă aceasta ajută.

Alt lucru ar fi să permiteți toate avertismentele pe care le puteți avea și să le remediați pe toate.

0
adăugat

Ar putea fi o problemă de concurrency a două fire. Configurația DEBUG încetinește execuția în jos, astfel că problema nu apare. Dar, doar o presupunere.

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com

PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT

SEO - optimizare, România & Moldova
SEO - optimizare, România & Moldova
120 participanți

Pentru confort, opriți notificările. Parteneri: ciupacabra.com Toate grupurile IT: @Grupuri_IT

Python România
Python România
100 participanți

Comunitatea pasionaților de Python din România.

DevOps - comunitatea Română
DevOps - comunitatea Română
100 participanți

Vorbim despre Kubernetes, CI/CD, Linux, docker, monitorizare, Cloud services, Prometheus, network și orice alte teme legate de administrarea serverelor.

Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md

iOS dezvoltatori, România — Moldova
iOS dezvoltatori, România — Moldova
21 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro, @seo_ro Android: @ro_android

.NET Romania
.NET Romania
20 participanți

Grup despre tehnologii Microsoft

MySQL - comunitatea Română
MySQL - comunitatea Română
19 participanți

Comunitatea română a programatorilor MySQL.

PostgreSQL - comunitatea Română
PostgreSQL - comunitatea Română
5 participanți

Comunitatea română a programatorilor PostgreSQL.