c ++ - Omdøbning eksekverbar til game.exe forårsager 15 sekunders forsinkelse ved kørsel - STRANGE problem

Indlæg af Hanne Mølgaard Plasc

Problem



Dette ryster min forståelse af computere og operativsystemer på et niveau, der gør mig meget urolig. Jeg har lige brugt omkring en time ind i forskellige iterationer af kompilere kommandoer til g++ og i min exasperation omdøbt jeg den eksekverbare, der holdt forsinkelsen fra game.exe til gameg.exe og pludselig problemet forsvandt.


Her er lidt mere baggrund: Jeg bemærkede for nylig, at da jeg kørte min Eclipse unit test build, da jeg starter med en SDL-aktiveret test, ville det åbne SDL-vinduet og fryse i ca. 20 sekunder, før jeg kunne få testen startet. På efterfølgende tests (som kalder SDL\_Quit() og geninitialiserer SDL som en del af testprocessen er denne forsinkelse ikke til stede. Nu har jeg konstateret, at KUN, når den eksekverbare navngives nøjagtigt 'game.exe' sker dette! Jeg omdøber det til et andet filnavn, og det går glædeligt igennem løbende tests, og initialiserer SDL-systemet inden for et sekund som det normalt gør. Jeg havde antaget, at der skal være en slags fejl, der forårsager, at min Eclipse-konstruktion har denne adfærd, hvilket var ikke til stede i makefile-bygningen, men det viser sig, om jeg tager formørkelsen og omdøber dens eksekverbare (projektmappen den hedder game dermed game.exe) viser den ikke adfærd.


Ligeledes tager jeg min makefile build (hvis filnavn er entropy\_unittest\_disp.exe fyi) og omdøbe det til game.exe og det begynder at gøre dette. Jeg omdøber det til game og det gør det også (jeg kører fra Mingw 's bash .. Når ikke med .exe udvidelse, kender explorer ikke det er en eksekverbar. Men jeg ændrede det til game.exx og det fungerede normalt.


HVAD ER DENNE BLACK MAGIC? Hvorfor skal et program fungere anderledes afhængigt af dets filnavn ??? Jeg spørger argv

Bedste reference

, og jeg gør det faktisk for at udskrive for at konsolere dets værdi (til fejlfindingsformål), men det er overraskende, at det bare udskriver programmet og dets sti. Ingen logik er nogensinde udført på det i mit program.


Jeg forsøgte at køre GDB for at finde ud af, hvor den fryser, men når jeg trykker på Ctrl + C GDB, går det simpelthen ud.


har nogen nogen anelse om, hvad dette kan skyldes? En virus?


rediger: Jeg downloadede denne demo fra dette websted: http://www.sdltutorials.com/sdl-opengl-tutorial-basics/[13]


udpakket den, omdøb filen til game.exe, og yup, samme ting sker. HVAD ER DETTE? Jeg vil forsøge at køre afhængighedsvælgeren ud for at se, om noget forsøger at hænge ind i det.

Andre referencer 1


Jeg antager, at du enten har et AMD (ATI) eller Nvidia grafikkort med deres officielle drivere.


Chancerne er, game.exe er det eksekverbare navn for et aktuelt spil udgivet, og dine chauffører kører specielle optimeringer til 'spillet' eller indlæser Crossfire eller SLI profiler til dette spil. En hurtig Google-søgning synes at fortælle mig, at Resident Evil 4 kalder deres eksekverbare 'game.exe'.


Jeg anbefaler at kigge på dette link for yderligere oplysninger om, hvad der kan ske:


http://www.kn00tcn.net/site/ati-catalyst-profiles/[14]

Andre referencer 2


ikke sikker på, hvordan man svarer til stevens kommentar til det øverste svar, men hvad angår driverprofiler, er det bare en grundlæggende brute force check af .exe filnavne


nogle spil er garanteret at være i en bestemt undermappe, så driveren leder efter hvor exe er placeret, f.eks. '\ team fortress 2 \ hl2.exe'


men da de fleste spil giver dig mulighed for at vælge hvilket mappens navn du installerer til, og meget af tiden exe er i samme rodmappe, har førerne ikke andet valg end at blindt antage gameX.exe bliver gameX


en god 'bivirkning' af dette er, at du kan tvinge andre spilprofiler til ethvert spil til fejlfinding, eller forsøge at aktivere CF/SLI-skalering


så prøv altid at sikre dig, at din eksekverbarhed har et originalt navn for at vide, at gfx-driveren ikke forsøger at køre 'optimeringer', der udelukkende er lavet til andre spil

Andre referencer 3


Kan det skyldes, at antivirussoftware kører på dit operativsystem? Visse filer bliver almindeligt anvendt i Virus 'Game.exe' kunne være en af ​​dem og dermed yderligere pleje fra OS/AV for at sikre, at det er sikkert

Andre referencer 4


Test det i rene vinduer uden ekstra softwareinstallation, hvis det fungerer fint, så har du muligvis nogle beskyttelsessoftware som Anti-virus eller sandkasse ..., hvis du har nogen af ​​denne software deaktivere dem og test igen

Andre referencer 5


Kontroller, om game.exe er angivet i registreringsdatabasenøgle for Image File Execution Options HKEY\_LOCAL\_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options. Det kan bruges til at starte et bestemt program som debugger til en applikation med et bestemt navn. (Flere oplysninger om indstillinger for billedfiludførelse) [15]

Andre referencer 6


En EXE opfører sig forskelligt baseret på navnet på grund af AppCompat Shimming. Se listen over indlæste moduler, og se om der er en masse DLL'er, der starter med 'ac', der er indlæst i din app.