Kako odpraviti napake pri izvajanju programa Windows Visual C ++

Kako odpraviti napake pri izvajanju programa Windows Visual C ++

Knjižnice v skupni rabi v sistemu Windows naredijo programiranje veliko učinkovitejše za programerja, ki mu ni treba znova izumiti kolesa vsakič, ko mora opraviti skupno nalogo. Olajšajo tudi zapiranje varnostnih lukenj v kodi v skupni rabi, ko jih najdemo, saj jo je treba zakrpati na manj mestih in ne zahteva ponovnega sestavljanja vsake aplikacije.





Kljub tem pozitivnim vidikom lahko povzročijo lastne težave, ko poskušajo odpraviti osnovni vzrok sporočil o napakah, ki jih lahko ustvarijo.





Vprašanje našega bralca:

Kako odpravim težavo z 32-bitno različico C: Windows explorer.exe v sistemu Windows Vista na Dell Inspiron 530?





Ko kliknete gumb V redu v pogovornem oknu, prikazanem na posnetku zaslona, ​​se bo zaslon zatemnil in se vrnil v normalno delovanje, vendar mi ne bo omogočil dostopa do pogona C, D in včasih do pogona E, ko poskušam dostopati do njih iz mojega računalnika.

Tek sfc /scannow ne najde nobenih napak. Poskušal sem odpraviti to težavo s spletnih mest Dell in Microsoft. Namestil sem tudi Microsoft Visual C ++ 2010 Redistributable Package (x86). Računalnik je po posodobitvi sistema Windows popolnoma posodobljen.



Bruceov odgovor:

Opomba: Razprave o Raziskovalcu v sistemu Windows 7 in starejših različicah veljajo tudi za Raziskovalca datotek v sistemu Windows 8 in novejših različicah. Če je med njima opazna razlika, bo to izrecno navedeno.

Lupina Windows

Windows Explorer je lupini in deluje kot postopek explorer.exe, kot je prikazano v upravitelju opravil ali raziskovalcu procesov Sysinternals. Tako kot mnogi drugi programi Windows, vse funkcije, ki jih nudi lupina, niso vključene v to eno samo izvedljivo datoteko. Obstaja več deset drugih datotek EXE in DLL, ki se uporabljajo za implementacijo listov lastnosti, upravljavcev lastnosti, upravljavcev predogleda, kontekstnih menijev in mnogih drugih elementov, ki jih vsak dan uporabljate v Raziskovalcu.





Raztegljiva lupina

Razširitve lupine omogočajo programerjem, da preprosto dodajo funkcionalnost Raziskovalcu Windows tako, da napišejo DLL za izvedbo naloge in registrirajo DLL v operacijskem sistemu, tako da Explorer ve, kje najti kodo za izvedbo naloge. Na primer, 7-Zip standardnemu kontekstnemu meniju doda podmeni, ki omogoča hiter dostop do nalog za upravljanje arhiva, Sentinel trdega diska doda prekrivne ikone standardnim ikonam pogona, tako da si lahko na hitro ogledate zdravstveno stanje pogona in HashTab doda nov list lastnosti za izračun in prikaz razpršenosti izbrane datoteke.

Mnoge od teh razširitev lupine so implementirane kot strežniki Component Object Model (COM) v procesu. To pomeni, da ko proces, v tem primeru Raziskovalec Windows, uporablja razširitev, se ne bo pojavil v upravitelju opravil ali Raziskovalcu procesov kot ločen postopek, ki se izvaja z lastnim identifikatorjem procesa (PID). Namesto tega se izvaja v klicnem postopku explorer.exe.





Privzeti enosmerni postopek

Raziskovalec Windows je napisan, da lahko deluje kot dva ločena procesa, vendar bo - v privzeti konfiguraciji - zaganjal samo en primerek. Ko se prvič izvede kot del zagonskega procesa, ustvari namizno okolje Windows. Ponovna izvedba ustvari novo nit v obstoječem procesu, ki prikaže znano okno za upravljanje datotek, namesto da bi začela nov proces.

To vedenje omogoča zmanjšan pomnilniški odtis, lahko pa tudi odpravi težave pri odpravljanju težav. Kritična napaka ali neobdelana izjema pri kodi, ki se izvaja v postopku explorer.exe, vključno s strežniki v procesu, ki jih ponujajo DLL-ji, bo povzročila, da bo z njo padlo celotno namizno okolje.

V večini primerov se bo namizni postopek samodejno znova zagnal. Če se ne zažene znova, lahko še vedno uporabite Ctrl-Shift-Esc, da odprete upravitelja opravil. Od tam pojdite na Datoteka> Novo opravilo (Zaženi ...)> tip explorer.exe> ​​V redu za ponovni zagon postopka.

Temu se lahko izognemo s preprosto spremembo. Odprto Raziskovalec Windows> Organiziraj> Možnosti mape in iskanja v sistemu Vista/7. Za Windows 8 in novejše različice odprite File Explorer> Pogled> Možnosti> Spremeni mapo in možnosti iskanja . Izberite Zavihek Pogled in preveri Zaženite okna map v ločenem procesu .

kako izvleči vodo iz polnilnega priključka

Če spremenite to nastavitev, bo vaš namizni proces ločen od vseh drugih odprtih oken Windows Explorerja. Če se katero od teh oken Explorer zruši, bo namizje ostalo nepoškodovano.

Knjižnica časa izvajanja Microsoft Visual C ++ (CRT)

Knjižnica časa izvajanja Microsoft Visual C ++ ponuja rutine za programiranje sistema Windows, ki avtomatizirajo številne naloge, kot so vnos/izhod, manipulacija datotek, dodelitev pomnilnika, sistemski klici in mnoge druge.

Vsaka namestitev sistema Windows bo imela nameščeni vsaj dve različici CRT -ja. Sveže zgrajena naprava Vista SP2 prek sistema Windows 10 bo imela tako različico 8.0 kot 9.0 (VC 2005 in VC 2008). Ko je nameščena dodatna programska oprema, lahko vključuje tudi novejše različice časov izvajanja, odvisno od tega, katera različica Visual C ++ je bila uporabljena za ustvarjanje programa ali katere koli njegove komponente.

Napake med izvajanjem

Ko se v delu kode pojavi napaka ali izjema, bo v idealnem primeru to obravnavano čim prej v postopku, ki se trenutno izvaja, in bodisi popravljeno bodisi omogočilo graciozno napako. Če napake ne obravnavamo lokalno, se posreduje do kode, ki je poklicala trenutno izvajajočo se kodo, in postopek se nadaljuje, dokler se izjema ne obravnava. Če dokonča zagon do vrha verige in ga še vedno ne obravnava, bo ustvaril napako pri izvajanju, kot je prikazano zgoraj.

Ko uporabnik klikne gumb V redu, se postopek zaključi. Če ima program definirano vedenje napake, na primer kritične storitve, ali njegovo stanje izvajanja spremlja drug postopek, se lahko samodejno znova prikaže. To se v tem primeru dogaja. Zaslon se zatemni, ko se postopek explorer.exe konča, nato pa se namizje vrne, ko se postopek explorer.exe znova zažene.

Čeprav zgornje sporočilo o napaki jasno označuje, da je prišlo iz postopka explorer.exe, ni verjetno, da bi bil problem v samem explorer.exe. Veliko bolj verjetno je, da je krivec drugje, na primer razširitev tretje osebe, ki jo uporablja Explorer.

Drugi premisleki

Z zgornjim opisom bralca o tem vprašanju je treba upoštevati še nekaj dodatnih postavk:

  • V času zrušitve je Explorer poskušal, vendar ni mogel, zapolniti pogled na seznam.
  • Nezmožnost dostopa do pogonov po ponovnem ustvarjanju namizja lahko kaže na to, da ima drug proces eno ali več teh naprav zaklenjenih, s čimer se prepreči dostop do novo ustvarjenega procesa explorer.exe.
  • Tek sfc /scannow in s čistim zdravstvenim stanjem, zaščitene vire sistema Windows spusti na dno seznama. Drugi vzroki so veliko bolj verjetni.

Popravki so na voljo

V tem konkretnem primeru bi na treh področjih iskal rešitev. Prva vključuje storitev Windows Search, druga vključuje preučevanje razširitev lupine, zadnja pa bi bile same razširitve VC ++.

Ker izvirni posnetek zaslona prikazuje zrušitev, ki se dogaja, ko Explorer poskuša zapolniti pogled na seznam, je možno, da storitev Iskanje sistema Windows blokira dostop do zahtevanih virov. To sem videl, ko se storitev zruši in nima pravilnih parametrov ponovnega zagona.

Pritisnite Win+R> tip services.msc> V redu za zagon upravljalne konzole s servisnim modulom. Pomaknite se navzdol do Iskanja Windows in dvokliknite vnos, da odprete pogovorno okno Lastnosti. Prepričajte se, da se nastavitve na zavihku za obnovitev ujemajo s spodnjo sliko.

Najpogostejša težava je nastavitev »Ponovni zagon storitve po:«. Ta napaka se pogosto pojavi, če ta nastavitev ni nič.

Problematične razširitve lupin

Prenesi Nirsoft ShellExView za vašo sistemsko arhitekturo (x86 ali x64), jo namestite in zaženite. Preučiti sistem in napolniti tabelo s podatki bo trajalo nekaj časa. Pomaknite se do stolpca CLSID Modified Time in kliknite glavo, da razvrstite to polje. Če želite izključiti module, ki jih ponuja Microsoft, pojdite na Možnosti> Skrij vse Microsoftove razširitve . Za tiste, ki uporabljajo 64-bitno različico sistema Windows, boste morda želeli prikazati 32-bitne razširitve v sistemu tako, da Možnosti> Prikaži 32-bitne razširitve lupine .

Poiščite razširitve, ki so bile dodane tik pred pojavom simptomov. Izberite enega ali več in pritisnite F7 ali pojdite na Datoteka> Onemogoči izbrane elemente ali kliknite na rdečo ikono LED v orodni vrstici. V idealnem primeru je treba to narediti eno za drugo.

Preverite, ali simptomi vztrajajo. Če se to zgodi, lahko znova omogočite predhodno onemogočene razširitve z uporabo F8 , Datoteka> Omogoči izbrane elemente ali zeleno ikono orodne vrstice LED. Od tu onemogočite drugo razširitev in ponovite postopek testiranja, dokler ne najdete tistega, ki povzroča težavo.

Popravite/znova namestite razširitvene datoteke VC ++

To uporabljam kot zadnjo možnost, če le en program odpravlja napake. Če imate več programov, ki imajo težave z napakami pri izvajanju VC ++, lahko najprej poskusite to.

Ko gledam nameščene programe v svojem sistemu ( Nadzorna plošča> Programi in funkcije ), prikazuje vse različice paketov za razširjanje (in nekatere njihove posodobitve) od različice 8 do različice 12 (VC ++ 2005 do VC ++ 2013). Namestil sem jih zaradi Microsoftovih programskih orodij, ki jih uporabljam. Večina uporabnikov ne bo imela vseh teh.

Lahko najdete najnovejši prenosi za podprte različice Visual C ++ iz Microsofta. Za naše namene vas morajo skrbeti le tisti, ki so označeni kot 'redistributable' paketi. Povezave, ki so razvrščene kot servisni paketi, so namenjene programskim orodjem, ne le časom izvajanja. Potrebovali boste le tiste, ki so trenutno navedeni v nameščenih programih v vašem sistemu. Namestitev drugih različic v tem primeru ne bo pomagala. Uporabniki 64-bitnih operacijskih sistemov bodo morda potrebovali različici CRT x86 in x64.

Windows Update preveri, ali so v računalniku nameščene najnovejše posodobitve za te pakete, vendar ne preveri, ali je pravilno nameščen in ni poškodovan. Namestitveni programi lahko preverijo, ali so vse datoteke za izvajanje pravilne in ali so vsi vnosi v registru pravilni.

Ko naložite ustrezne namestitvene programe, jih zaženite v sistemu. Različice iz leta 2005 vas bodo pozvale, da sprejmete licenčno pogodbo, preden znova namestite paket. Vsi drugi imajo grafični vmesnik, ki vas bo vprašal, ali želite popraviti ali odstraniti obstoječo namestitev. V večini primerov bo popravilo odpravilo težave.

Če želite poskusiti najbolj ekstremno metodo, lahko odstranite čas izvajanja, znova zaženete stroj in jih znova namestite. Te metode ne priporočam pri izvajanju v letih 2005 in 2008. Brez njih bo Windows ustvaril veliko napak in ob ponovnem zagonu vam ne bo na voljo veliko funkcionalnosti.

Zaključek

Z malo opazovanja, kančkom poskusov in napak ter nekaj razumevanja, kako se napake ustvarjajo med izvajanjem v sistemu, je mogoče najti in odpraviti težave s programsko opremo, ne da bi pri tem uporabili zapletena orodja in dnevnike za odpravljanje napak.

Ali ste v svojem sistemu naleteli na napake pri izvajanju? Kaj je bilo potrebno za njihovo reševanje? Sporočite mi v spodnjih komentarjih.

Deliti Deliti Cvrkutati E-naslov Tukaj je razlog, zakaj je FBI izdal opozorilo za koprivnico

FBI je izdal opozorilo o še posebej grdi vrsti odkupne programske opreme. Evo, zakaj morate biti še posebej previdni pri odkupni programski opremi Hive.

Preberite Naprej
Sorodne teme
  • Windows
  • Pojasnjena tehnologija
  • Vprašajte strokovnjake
  • Windows Explorer
  • Windows
  • Raziskovalec datotek
  • Iskanje Windows
  • Odpravljanje težav
O avtorju Bruce Epper(13 objavljenih člankov)

Bruce se z elektroniko igra že od 70. let, računalniki od zgodnjih 80. let in natančno odgovarja na vprašanja o tehnologiji, ki je ni uporabljal niti videl ves čas. Tudi sam se jezi, ko poskuša igrati kitaro.

Več od Brucea Epperja

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti