Valentin Kurbatov. nincs mit hibáztatni... a modern irodalom általános problémái a „Yasnaya Polyana” hátterében


). Panaszkodni, valakire panaszkodni, valakit megdorgálni, valakit szemrehányást tenni. "Nincs értelme a tükröt hibáztatni, ha az arcod görbe."(utolsó) "Ő (Guidon) íjat küldött neked, de téged hibáztat: megígérte, hogy meglátogat minket, de még nem készült fel." Puskin . "Együtt jelentek meg, és senkinek sem jutott eszébe, hogy ezért hibáztassa őket." Puskin . "Ha nem találod, amit keresel, hibáztasd magad." Goncsarov .


Ushakov magyarázó szótára. D.N. Ushakov. 1935-1940.


Nézze meg, mi a „FINE” más szótárakban:

    Lásd panaszkodni, haragudni... Szinonima szótár

    HAB, jaj, jaj; tökéletlen, kinek vagy kire (mire) (köznyelv). Szidd meg valakit, panaszkodj valakire vagy valamire. Hibázd magad (a semmiért hibáztasd magad). | Szuverén szemrehányás, jaj, jaj. Ozhegov magyarázó szótára. S.I. Ozhegov, N. Yu. Shvedova. 1949 1992… Ozsegov magyarázó szótára

    feddés- "hibáztasd magad!" mondják, hangsúlyozva, hogy az ember maga felelős tetteiért. És azt is mondják: „Nincs értelme a tükröt hibáztatni, ha ferde az arcod”, vagyis ne panaszkodj másokra, ha a te hibád. A szemrehányás ige panaszkodni, szemrehányás vezet... ... Szórakoztató etimológiai szótár

    feddés- kinek, minek és minek. Zinochka őt hibáztatta, amiért magára hagyta (B. Polevoy). Nincs mit hibáztatni a tükörért, ha az arc görbe (közmondás) ... Ellenőrző szótár

    Yayu, yayu; nsv. (kire mi). Razg. Panaszkodni, siránkozni. * Nincs értelme a tükröt hibáztatni, ha az arc ferde (Utolsó). //általában kinek. Megdorgálni, elégedetlenségét kifejezni valami miatt. ◊ Magát hibáztatja (hadd hibáztassa). Csak magadat hibáztasd (azért... enciklopédikus szótár

    feddés- I/yu, I/eat; nsv. a) kinek mit köznyelvben. Panaszkodni, siránkozni. * Nincs mit róni a tükörnek, ha az arc görbe (utolsó) b) ott. általában megdorgál valakit, elégedetlenségét fejezi ki valami miatt. hibáztasd magad... Sok kifejezés szótára

    Nesov. nepereh. bomlás 1. Panaszkodni, panaszkodni valakiről vagy valamiről, szemrehányást tenni, szemrehányást tenni valakinek. 2. Megdorgál valakit valamiért, elégedetlenségét fejezi ki valami miatt. Efraim magyarázó szótára. T. F. Efremova. 2000... Modern Szótár Orosz nyelvű Efremova

    Büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés, büntetés. büntető, büntető, ... ... Szóformák

    feddés- Saját rus. Suf. büntetés származéka... Az orosz nyelv etimológiai szótára

    feddés- Ez az ige, jelentése: szemrehányás, utótag módszerrel keletkezik a peni... Krylov orosz nyelv etimológiai szótára

Könyvek

  • Neked és nekem, és a pokolba velük! , Dilya Enikeeva. bemutatjuk Önnek új sorozat könyvek Dili Enikeeva, amely vicces és erotikus jelenetek különböző műfajú műveiből, élet történetek, mesék, anekdoták és a szerző „ironizálásai”…
  • Hogyan őrizd meg egészségedet és irányítsd a sorsod. Egyetlen körben: szellem, lélek, test, Serebryakova Ljudmila Andreevna. Milyen gyakran szokás manapság a sorsot, a karmát, az öröklődést hibáztatni. Ezért hiszünk abban, hogy semmit sem lehet megváltoztatni. És ha tényleg elegünk van, rohanunk asztrológusokhoz, jósokhoz, médiumokhoz...
„NINCS A TÜKÖRBE BErúgni, AMIKOR AZ ARC GÖBRE”...

A TÜKÖRBE RÚGÁS

Tatyana Shabaeva
újságíró Moszkvából

Gyerekként nem értettem a „büntetés” szó jelentését – amivel természetesen először a „Főfelügyelő” című epigráfiában találkoztam. Körülbelül nyolc éves lehettem, és úgy döntöttem, hogy ez a szó ugyanazt jelenti, mint a „rúgás”, valami ilyesmi: Necha tükör rúgj, ha görbe az arc."

Azóta több mint húsz év telt el, és régóta tudom, mit jelent a „hibáztatni”, és minden alkalommal, amikor a szemem sarkából a „nagypolitikába” nézek, meglepődöm azon, hogy akkor mennyire igazam volt, gyermek. Vagy annyira leromlott az erkölcs Gogol kora óta, hogy a „hibáztatás” már túl kényes intézkedés, és rugdosni, taposni akarsz?

Először is Shoigu. Tehát kifejti, hogy nem Levitin közlekedési miniszter a hibás a közlekedési katasztrófákért, hanem az emberek, kisemberek, akiknek erkölcsi állapotát erőteljes büntetőintézkedésekkel kell javítani. Ezt már hallottuk valahol, egészen mostanában. Ó, igen, ezt mondta Fursenko miniszter az oktatási reform bírálatára, Golikova miniszter pedig az egészségügyi reform bírálatára. A miniszterek jók, profik, jót akarnak. A kisemberek erkölcstelenek, felelőtlenek, szabotálnak. Fel kell emelnünk.

És nem mondhatod, hogy nem szükséges! Erre a fegyelemre nincs szükség, hogy a korrupció nem gonosz. Szükséges. Gonosz. Fel kell emelnünk. De ki mondja ezt? Ki hív tudatosságot és felelősséget? Ezt olyan emberek mondják, akik rendszeresen lábbal tiporják az Alkotmányt, és egy deklarált demokráciában folyamatosan és szemérmetlenül figyelmen kívül hagyják közvélemény, még akkor is, ha azt szakszerűen és egyértelműen fejezik ki.

Felelősségteljes emberekre van szüksége? Nos, legyenek igazán felelősek. Hadd állítsák fel maguk a szabályokat, amelyeket hajlandók tiszteletben tartani. Talán ez nem egy univerzális módszer, de vannak olyan területek Oroszországban, ahol a társadalom képes olyan szakembereket jelölni, akik képesek ilyen szabályokat alkotni. Ennek a képességnek a sorvadása - nevezetesen a függetlenség sorvadása, amelyet kormányunk ma művel - mindig felelősségvesztéssel jár az alsóbb szinteken. Miért kellene betartanunk azokat a szabályokat, amelyeket olyan kétes szakemberek fogadtak el, akik maguk is más járműveken utaznak, más klinikákba és iskolákba látogatnak – vagyis olyan emberek, akik más koordinátarendszerben léteznek, mint amilyenre ők határozták meg a szabályokat?

Másodsorban a liberálisok. Most Medvegyevről Putyinra váltanak. Valaki nem tudta, hogy az egyik kéz ujjai közötti genetikai különbség nulla, és ez meglepődött. RENDBEN. De mik a következtetések? Íme egy tipikus (és mellesleg az érzelmek általánosításának kísérlete): most menjetek el ebből az országból. Sokadik alkalommal ismét elvesztek utolsó illúzióink. Ennyi, uraim.

Képzeljük el a helyzetet. Egy lányt próbálsz elcsábítani. Hozsz neki csokit és mondjuk rózsát, olvass fel neki Balmontot. Viselje és olvassa már évek óta. És egyre hidegebb veled szemben. „Micsoda bolond” – mondod, ha átlagos orosz liberális vagy. – A nő durva és műveletlen, nincs kilátás. Távozz tőle." És nem arról van szó, hogy nem tudod, de nagy vonalakban nem érdekel, hogy a lány szereti a fagylaltot és az orgonát, és nem Balmont, hanem Tyutchev.

Nem tűnik a legmegfelelőbb összehasonlításnak? Össze lehet hasonlítani egy országot egy lánnyal, akiről szintén gondoskodni kell? És nem is lenne teljesen helyénvaló e nélkül az érzelmes, igazságtalan, infantilis reakció nélkül: „Ó, megint megfosztottál minket az illúzióinktól! Szóval viszlát, mosdatlan Oroszország!” De ki a hibás azért, hogy elvesztetted az illúzióidat, amelyeket magad teremtettél a semmiből?

Nagyon hasonló. Egy autokratikus kormány elégedetlen az emberekkel, mert nem váltják be a hozzá fűzött reményeket. A liberálisok elégedetlenek a kormánnyal és az emberekkel is, mert nem élnek illúzióikkal. Az emberek összességében elégedetlenek a kormánnyal (legalábbis Fursenko és Golikova alakja tekintetében) és a liberálisokkal (ha tisztában vannak létezésükkel). És mindenki tükrözi a másikat és együtt rúgja a tükröt.


A polgármester, aki már öreg a szolgálatban, és a maga módján nagyon intelligens ember. Bár megvesztegető, nagyon tiszteletteljesen viselkedik; elég komoly; néhány még visszhangos is; nem beszél se hangosan, se halkan, se többet, se kevesebbet. Minden szava jelentős. Arcvonásai durvák és kemények, mint bárkinek, aki az alacsonyabb rangokból kezdte szolgálatát. A félelemből az örömbe, a durvaságból az arroganciába való átmenet meglehetősen gyors, akárcsak egy durván fejlett lélekhajlamú embernél. Szokás szerint gomblyukas egyenruhájában és sarkantyús csizmában van. A haja nyírt és ősz csíkos




Ammos Fedorovich Lyapkin-Tyapkin – bíró. Nagyon tartja magát okos ember, hiszen egész életemben öt-hat könyvet olvastam. Lelkes vadász. Az irodájában, az iratszekrény fölött egy vadászpuska lóg. Kenőpénzt vesz agár kölykökkel. Az általa vizsgált bűnügyek olyan állapotban voltak, hogy ő maga sem tudta kitalálni, hol az igazság és hol a hazugság.


A teljes közönyről közszolgálat a rajta szereplő emberek komédiában és a megbízott képében beszélnek jótékonysági intézmények Eper, kövér ember, de vékony szélhámos. A fennhatósága alá tartozó kórházban úgy halnak a betegek, mint a legyek, az orvos egy szót sem tud oroszul. Eközben Eper vitatkozik: Egyszerű ember: ha meghal, úgyis meghal; ha meggyógyul, hát meggyógyul. A bürokrácia tipikus képviselőjeként az is jellemző rá, hogy a felettesei előtt háborog, és hajlandó feljelenteni kollégáit, amit Hlesztakov megérkezésekor tesz.


Christian Ivanovich Gibner megyei orvos(főorvos). Eper Gibnerről: „Ami a gyógyulást illeti, Christian Ivanovics és én intézkedtünk: egyszerű ember: ha meghal, úgyis meghal; ha meggyógyul, akkor meggyógyul... és Christian Ivanovics egy szót sem tud oroszul..."


Luka Lukich Khlopov - iskolafelügyelő. Természeténél fogva nagyon gyáva. Azt mondja magában: "Ha valaki magasabb rangú beszél hozzám, egyszerűen nincs lelkem, és a nyelvem elsorvadt, mint a piszok." A tanárok tanítanak az iskolában. Egy tanár állandó grimaszokkal kísérte tanítását. A történelemtanár pedig a túlzott érzésektől székeket tört össze


Shpekin nagy rajongója annak, hogy mások leveleit olvassa, „nemcsak elővigyázatosságból, hanem kíváncsiságból”. Még a kedvenc leveleit is összegyűjti. Ráadásul maga a polgármester, aki aggódott az „átkozott inkognitó” miatt, „a közjó érdekében” arra kérte, hogy nyomtasson ki minden bejövő és kimenő levelet, hogy kiderüljön, tartalmaz-e jelentést.


Bobchinsky és Dobchinsky, mindketten rövidek, rövidek, nagyon kíváncsiak; rendkívül hasonló egymáshoz: mindkettő kis hasú; Mindketten gyorsan beszélnek, és rendkívül segítőkészek a gesztusokkal és a kezekkel. Dobcsinszkij kicsit magasabb és komolyabb, mint Bobcsinszkij, de Bobcsinszkij pimaszabb és élénkebb

"Nincs értelme a tükröt hibáztatni, ha ferde az arcod" népi közmondás, epigráf „The Inspector General”.

Amikor egy arc görbülete fantazmagorikus paraméterekre tesz szert, az abszurd színháza jön létre. Nagy Színház, melynek fő forrásai és kezdetei az orosz prózában, az orosz dramaturgia XIX század. A dráma, amely képes újjászületni a döntő történelmi kereszteződésekben, és szereplői körbenézve fordulnak hozzád és hozzám azzal a kérdéssel: hol vagyunk?

Michal Vasilich Krechinsky otthona, a címen Új Arbat, 11 (az Ermitázs Színházban Szuhovo-Kobilin „Krecsinszkij esküvője” című darabjának bemutatóját mutatják ott, Mihail Levitin rendezésében) egy állítólagos magas rangú ős portréját szenteli fel. A portré úgy készült, hogy ha fejjel lefelé, minden szögben felakasztjuk, alig észrevehető. Michal Vasilich azonban, ha alaposan megnézte, valószínűleg felismeri magát a méltóság portréjának görbületében. Mert nagy szakértője ennek a résznek, a környező görbületnek, a festőinek és minden egyébnek. Nemcsak szakértő, hanem építész, alkotó. Evgeniy Redko így játssza őt.

Azt mondani: az orosz abszurdum szinte semmit sem mond. Orosz abszurd – rendkívül, lenyűgözően más.

Gogol nevetése a könnyek által, amikor az együttérzés hulláma kerít hatalmába, amikor nemcsak Podkoleszinre és Agafja Tikhonovnára nézel, hanem Gorodnyicsira és családjára is.

A „Balalaikin és társai” című darabban (1973, Tovstonogov, „Kortárs”, a „ Modern idill A szigorú, könyörtelen Szaltykov-Scsedrin) legmeghatóbb pillanatai a szégyen kétségbeesett felvillanásai, amelyek a fájdalmasan romló szereplők lelkében történtek.

Jevgenyij Redko Krecsinszkijjében egy csepp szégyen sincs, Mihail Levitin előadásában egy csepp rokonszenv sincs, és az arcok görbülete nem feltétlenül az arc görbülete, hanem feltétlenül a lelkek görbülete.

Néha hallod: a gonosz varázsa. Ami? Krechinsky az Ermitázs előadásában ennek a varázsnak a megtestesítője. Minden bizonnyal szót fogad, amikor megtudja, hogy a hülye Lidochka Muromskaya messze nem az első áldozata. Krechinsky Evgeniya Redko mindent elsöprő szenvedély: játék, kaland, pénz, hatalom - lépésről lépésre, és ha nem sikerül, akkor kezdjük újra.

Nekem úgy tűnt, hogy a „Krechinsky esküvője” valami különálló, még mindig összhangban volt Osztrovszkijjal, nem egészen Szuhovo-Kobilinnel. Nem úgy Levitin darabjában. Itt talán az egész Szuhovo-Kobilint játsszák, stilisztikai és szemantikai megközelítéssel az „ügy” és a „Tarelkin halála”-hoz egyaránt.

Nos, itt van Krecsinszkij kísérete. Finoman fogalmazva - egy csapat, pontosabban fogalmazva - egy falka, ahol Krechinsky a vezető.

Fedor inasa Alexander Pozharov művész. Szolgáltatási karakternek tűnt. Írva - nagyon kevés sor. Eljátszották - a Krecsinszkijjal való pillantások és gesztusok cseréjén keresztül, amikor még fél szó sem kell a teljes kölcsönös megértéshez - a legtapasztaltabb kettő hosszú távú együttműködését játszották el, akik közül mindegyik pontosan tudja a helyét. Fedor - a mindennapi tisztelet megőrzése érdekében.

Raspljuev - kétes, piszkos parancsok végrehajtására. Itt Konstantin Tumilovich művész előadásában a görbület lekerült a listáról. Itt nem a gonosz varázsa van, hanem az elvetettségei. Emlékszem a korai Iljinszkij, Garin, Martinson groteszkjére. Gondoltam – nem túl sok? Nem, nem túl sokat. Remélem, az elhangzottak nem ártanak a fiatal művésznek.

Eldobások – kidobjuk őket, mint feleslegeseket? Nem, nem dobhatod ki. Mindhárman - Krechinsky, Fedor, Rasplyuev - annyira összefüggenek, hogy külön-külön már nem tudnak túlélni. Sőt, mögöttük - erőltesse meg a fantáziáját - asszisztenseket, tanácsadókat, menedzsereket, gyilkosokat, titkárokat sejthet. Az életteret mohón elfoglaló nyáj.

Egy ilyen rögzítés nem nehéz feladat, és ez a Novy Arbat 11-es előadásának legkeserűbb keserűsége. Kire jó, kire büszke? Ez Majakovszkijtól származik. Anna Antonovna néni (Daria Belousova művész) súlyos fáziseltolódásával a társadalmi csillogás miatt? Csíjlábas (megint görbe!) korcs Nelkin (Sztanyiszlav Szuharev művész) - hát mit csináljon Krecsinszkij ellen, még ha veszített is? Muromsky (művész Szergej Oleksyak), lánya Lidochka (művész Alla Chernykh) stabil helyükkel a semmiből?

A birkák sorban járnak,
Dörögnek a dobok.
Bőrt adnak nekik
Maguk a birkák.

Ez Bertolt Brechttől származik.

Valószínűleg lehet részvétet érezni a birkák iránt, de hirtelen - a semmiből - más élőlények jutottak eszembe.

Valahol olvastam: Moszkvában megjelentek a flancosok, akik elzárják házuk pincéjéből az egyetlen kijáratot, befalazzák a télre menedéket találó kóbor macskákat. És arra gondoltam: mit éreznék, ha egy befalazott macska nyögését hallanám?

Manapság nagyon sok a hajléktalan macska, sikolyuk emberi sikolyokkal keveredik.

Levitin darabjában nincsenek birkák vagy macskák, de van egy saját menazséria. Krecsinszkij először vörös szemű bika álarcában jelenik meg a színpadon, a neki alárendelt szereplők láncolatát vezetve. (Schwartz „Árnyékában” Levitin egyik korábbi előadásában, az Árnyékban, ugyanaz a Jevgenyij Redko előadásában, engedelmes körtáncot is vezetett, de ott még árnyék volt, de itt, a „Krecsinszkijben” lett erősebb, annyira gyökeres, hogy éppen megfelelő magát az árnyékot vetni.)

Tehát akkor a bika - mellesleg a darabból van: Krecsinszkij Muromszkijnak adja, aki teljesen megpuhult egy ilyen ajándéktól. És mégis - egy füstölt sertéstest, Maria Krivtsova művész akaratából, aki tudja, hogyan, egy hatalmas veche harang helyét vette át a színpadon, amely feltehetően soha nem szólalt meg. No meg egy portré, egy magas rangú ős portréja. Vlagyimir Daskevics kifinomult gúnyos zenéje alatt a 11 éves Novy Arbaton minden összezavarodott és összezavarodott.

És hirtelen sikoltozni akartam: nem én vagyok - a páncéllábú korcs! És a súlyos fáziseltolódás nem nekem való! És ez egy idegen nyögés egy befalazott pincéből. Idegen! Idegen... Mi van, ha nem egy idegen?

Akkor miért a tükröt hibáztatjuk? Óriási orosz abszurditás. Az egyik inkarnációja.

Elismerem, hogy a „Krechnisky's Wedding on Novy Arbat 11” című darabból hiányzik a humanista kezdet. De arra sem árt belegondolni, hogyan lehetünk méltóak ehhez a kezdethez. Mindannyiunknak. Legalábbis azért, hogy ne a nem teljesen humanista vég küszöbén álljunk.

  • Fordítás

Az egyik legnyomasztóbb dolog minden programozó számára az a felismerés, hogy minden idejét nem arra fordítja, hogy valami hasznosat hozzon létre, hanem az általunk előidézett problémák megoldására.

Ezt a folyamatot hibakeresésnek nevezik. Minden programozó nap mint nap szembesül azzal, hogy amikor kódot ír, akkor a kódban hibákat is okoz. És ha egyszer rájön, hogy a programja nem működik, meg kell keresnie azokat a problémákat, amelyeket ő maga hozott létre.

Az ilyen problémák megoldására a számítógépipar létrehozta nagy mennyiség eszközök, amelyek segítenek megbizonyosodni arról, hogy a program megfelelően működik. A programozók folyamatos integrációs technikákat, egységteszteket, állításokat, hibakeresőket stb. használnak a hibák megtalálásához. De a hibák továbbra is megmaradnak, és ezeket az emberi gondolkodás segítségével ki kell küszöbölni.

Egyes programozási nyelvek, például a C, rendkívül érzékenyek az ilyen típusú hibákra, amelyek véletlenszerűen jelennek meg és tűnnek el, és amint elkezdi megérteni megjelenésük okát, azonnal eltűnnek. Az ilyen hibákat gyakran Heisenbugs-nak nevezik, mert amint elkezdi keresni őket, azonnal eltűnnek.

Ilyen hibák bármely programozási nyelvben előfordulhatnak, különösen multitasking kód írásakor, ahol a legkisebb késleltetés is versenyhelyzetet okozhat. De C-ben van egy másik probléma - memóriaszivárgás.

Mindazonáltal, függetlenül attól, hogy mi okozza a hibát, a probléma hibaelhárításának legfontosabb lépései mindig a következők:

  • Keresse meg a legkisebb mintát, amelyben a hiba teljesen reprodukálódik. A Heisenbugs esetében ez nehéz lehet, de még az olyan kísérletek kis százaléka is jelentős, amelyekben a hiba reprodukálódik.
  • Automatizálja a tesztelési folyamatot. Sokkal jobb, ha újra és újra lefuttathatja a tesztet. A hiba kijavítása után akár a program részévé is teheti – így elkerülhető, hogy a hiba ismét megjelenjen.
  • Keresse az okot, amíg meg nem találja az alapját. Amíg meg nem találod az igazi ok Ha hiba történik, nem mondhatja biztosan, hogy kijavította. A Heisenbugs használatával nagyon könnyen összezavarodhatunk, ha azt gondoljuk, hogy kijavította a hibát, amikor az hirtelen eltűnik némi keresés után.
  • Javítsa ki az okot, és ellenőrizze a 2. lépéssel.
Nemrég megjelent egy cikk a Hacker News-ban - Ha C-ben van egy Heisenbug, akkor probléma van a fordító optimalizálójában. Ez nagyon téves ítélet.

Az Ön által használt fordítót valószínűleg több ezer ember használja, míg a programját valószínűleg csak Ön. Mit gondolsz, a fordító vagy a programod működik a legstabilabban?

Valójában a programozó tapasztalatlanságának jele az a tény, hogy az első dolga, amikor hibát talál, valaki mást hibáztat. Nagyon csábító a számítógépet, az operációs rendszert és a használt könyvtárat hibáztatni. Az igazi programozó azonban az, aki képes irányítani „én”-jét, és rájön, hogy a hiba nagy valószínűséggel az övé.

Természetesen más programozók kódjában is vannak hibák. Kétségtelen, hogy a könyvtár nem működik, operációs rendszer furcsa dolgokat csinálhat, és a fordító furcsa kódot generálhat. De ez gyakran az Ön hibája, és ez akkor is érvényes, ha a hiba túl furcsának tűnik.

A hibakeresési folyamat során gyakran felüti a fejét a saját kódjával, és újra és újra megismétli a leglehetetlenebb dolgokat, amelyek egyszerűen nem történhetnek meg a kóddal. Egy ponton azonban a lehetetlen lehetségessé válik, majd hibát talál.

A fenti cikkben van egy határozottan hiányos példa:

„Kapcsolja ki az optimalizálót, és ellenőrizze újra a programot. Ha működik, akkor a probléma az optimalizálóban van. Játssz az optimalizálási szintekkel, növelve a szintet, amíg a hiba el nem kezd szaporodni.”

Az optimalizálási szintek megváltoztatásakor csak annyit tud, hogy a szintek attól függetlenül változnak, hogy megjelenik-e hiba vagy sem. Ez nem jelenti azt, hogy az optimalizáló nem működik megfelelően. Nem találta a keresett hiba okát.

Mivel az optimalizálók munkájuk felgyorsítása érdekében manipulálják a kódot, valószínű, hogy az optimalizálás szintjétől függően Heisenbugok jelenhetnek meg vagy eltűnhetnek. Ez nem jelenti azt, hogy az optimalizáló nem működik megfelelően. Még mindig nagy valószínűséggel a te hibád.

Itt konkrét példa egy C program, amely hibát tartalmaz, amikor a fordító optimalizálási szintje megváltozik, és a program furcsa viselkedését mutatja.

#beleértve

Int a()
{
int ar;
ar = (getpid() % 19 == 0);
}

Int main(int argc, char * argv)
{
int rc;
rc = 0;
a();
return rc;
}

Fordítsa le ezt a programot a gcc-vel Mac OS X alatt a következő Makefile segítségével (a kódot az odd.c-be mentettem).

CC=gcc
CFLAGS=

És itt van egy példa egy szkriptre, amely 20-szor futtatja a programot, és kinyomtatja az eredményt:

#!/bin/bash
for i in (0..20)
csináld
./páratlan ; echo -n "$?"
Kész
visszhang

Ha ezt a szkriptet futtatja, nullákból álló karakterláncot vár, mivel az rc soha nem kap nullától eltérő értékeket. Íme azonban egy példa a program működésére:

$./teszt
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ha Ön tapasztalt C programozó, akkor látni fogja, hogyan jelenítettem meg az egyiket, és miért jelenik meg benne különböző helyeken. De most próbáljuk meg hibakeresni a programot a printf segítségével:

[...]
rc = 0;
printf("[%d]", rc);
a();
[...]

A program futtatásakor a hiba eltűnik.

$./teszt
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Furcsán néz ki, ezért áthelyezi a printf-et egy másik helyre:

[...]
rc = 0;
a();
printf("[%d]", rc);
[...]

És ugyanazt a furcsa eredményt kapja, amikor a hiba eltűnik. És ugyanez történik, ha letiltja az optimalizálót, és még printf nélkül sem jelenik meg a hiba:

$ make CFLAGS=-O3
gcc -O3 -c -o páratlan.o páratlan.c
gcc odd.o -o odd

$./teszt
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Mindez azért történik, mert az a() függvény 16 egész elem számára foglal memóriát. És a tömb vége után azonnal 1-et vagy 0-t ír, attól függően, hogy a folyamat PID-je osztható-e 19-cel vagy sem. A veremben való elhelyezkedése miatt végül az rc-be íródik.

A printf hozzáadása vagy az optimalizálási szint megváltoztatása megváltoztatja a kód elrendezését, és megakadályozza az rc helytelen hívását. De légy óvatos, a hiba nem szűnt meg. Az egységet egyszerűen egy másik memóriacellába írták.

Mert A C nagyon érzékeny az ilyen típusú hibákra, ezért fontos használni jó eszközök hogy ellenőrizze az ilyen problémákat. Például egy statikus kódelemző