• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    /* Toto je klub především pro lidi, pro které je programování jednou z mnoha massive multiplayer online počítačových her, které lze hrát.
        V tomto klubu hrozí sémantická hereze a nezdravě vysoký obsah syntaktického cukru. Nevhodné pro algoritmické diabetiky.
        Od účastníků debaty se předpokládá automaticky přístup k instalovanému GNU C: sudo apt-get install build-essential
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    C (programovací jazyk)#C99 Heslo na české Wikipedii
    Jazyk C - Základy praktického programování V Praze 2oo7 pro SSPŠ Tomáš Harvie Mudruňka a kolektiv - jak si programování v C představuje většina lidí
    http://stevenkobes.com/ctest.html C Programming Puzzlers - nepouštějte se do flamewars v tomhle klubu, pokud neuhodnete aspoň polovinu správně!
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://en.wikipedia.org/wiki/C99 C99 is a modern dialect of the C programming language.
    http://cprogramminglanguage.net/ C programming language
    http://cprogramminglanguage.net/c-programming-language-tutorial.aspx C programming language - úvod
    http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language C makes it easy to shoot yourself in the foot. (ještě že ne do hlavy...)
    http://en.wikipedia.org/wiki/C_preprocessor
    http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html C99 makra s proměnným počtem argumentů - __VA_ARGS__
    http://gcc.gnu.org/onlinedocs/gcc/ GNU C Compiler
    http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Optimize-Options.html
    http://bellard.org/tcc/ Tiny C Compiler - prý C99 compliant (min. umí __VA_ARGS__) - vhodný pro skriptování v C - umí #!/usr/bin/tcc -run
    http://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest - pokud jste neviděli tohle, tak jste ještě neviděli opravdu nečitelný C zdroják
    http://bellard.org/otcc/ Obfuscated Tiny C Compiler - z tohohle vtípku vznikl Tiny C compiler
    http://en.wikipedia.org/wiki/ANSI_C Jak se střelit do nohy standardizovaným způsobem.
    http://eli-project.sourceforge.net/c_html/c.html ANSI C Specification
    http://www.lysator.liu.se/c/ Různý ANSI C bordel
    http://www.cs.rit.edu/~ats/books/ooc.pdf Object Oriented Programming with ANSI-C - a pak že to nejde
    http://en.wikipedia.org/wiki/Longjmp co jsou to setjmp()/longjmp() knihovní funkce (pro všechny, podle kterých to bez C++ try { } catch() ... nejde)
    http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/dcdc710c27f47c72 C neumí správně počítat (?)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://www.fastcgi.com/ FastCGI is simple because it is actually CGI with only a few extensions.
    http://www.metalshell.com/source_code/18/Mysql_Select.html How to do a simple connection and select with mysql
    http://xmlsoft.org/ The XML C parser and toolkit of Gnome
    http://curl.haxx.se/libcurl/ libcurl - the multiprotocol file transfer library
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    https://dev.arachne.cz/svn/cll1h SVN/Trac jazyka C<<1 (user-friendly nadstavba nad ANSI C99 - ve stylu JQuery vs. JavaScript)
    Benchmark iterace a serializace stringů v různých jazycích vs. v C
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        moderátor se velice zhruba řídí zvyklostmi moderace, která kdysi platila v řadě konferencí sítě FidoNet ... C != 0xdead */
    rozbalit záhlaví
    FLEGMA
    FLEGMA --- ---
    XCHAOS: A remote debug je jako nejakej vyssi luxus v cecku ? Teda to musite trpet :-)
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: jak říkám, já si nějaký čas hrál s xwpe a rhide. pochopitelně po zkušenostech s omezeními v DOSu se mi hrozně líbilo, že můžu krokovat třeba i síťovou aplikaci běžící na serveru... moje kritika se týkala právě méně než nulové uživatelské přítulnosti čistého gdb :-)

    _BENNY: já to úplně chápu... současně ale nevyvíjím komerční aplikace, od kterých bych šířil jen binárky, a podobná situace se u mě neděje moc často. popravdě... trochu něco jsem v posledních pár letech programoval, tedy nejen v C - ale nejčastější způsob komunikace s klientem/uživatelem byl vždy ten, že jsem si vyžádal dodání vstupních dat, které daný problém dokázaly reprodukovat (a tady jsem tedy dokonce byl nucen i hledat chyby po jiných, párkrát). klienta, která dodá coredump, si sice představit umím... ale prostě žádné takové kšefty teď nemám.
    DANIELSOFT
    DANIELSOFT --- ---
    tak kdyz si clovek nad "gdb" nainstaluje "ddd", tak je to o neco pristupnejsi a pohodlnejsi - a pritom clovek neprijde o moznost zadavat primo do gdb commandy, pro ktere v ddd neni gui cudlik
    _BENNY
    _BENNY --- ---
    ono treba kdyz ma clovek pruser nad hlavou a nasranej zakaznik je schopen dodat pouze crashdump, tak veci jako gdb nebo windbg docela uvita. i kdyz to prostredi je fakt desny, zaplatpanbuh za nej :)
    POTRAT
    POTRAT --- ---
    XCHAOS: ja teda s gdb pracuju skoro kazdej den a nemuzu si ho vynachvalit ;)
    XCHAOS
    XCHAOS --- ---
    _BENNY: ale kdo tady mluví o "zanevření"... spíš jsem už dlouho nevyvíjel tak rozsáhlý projekt, který by debugování potřeboval.

    s gdb se pracuje opravdu dost blbě - to je celé, co jsem tím chtěl říct.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: A prozenes to alespon valgrindem, treba?
    _BENNY
    _BENNY --- ---
    XCHAOS: drasticke opatreni je zanevrit na techniky debuggingu kvuli jednomu gdb. hranicici s omezenosti :)
    XCHAOS
    XCHAOS --- ---
    REDGUY:
    _BENNY: trochu jinak :-)

    pod DOSem jsem používal td286 (s td386 byly nějaké problémy s ovladači v reálném módu či co, už si to přesně nepamatuju, DOS byl hrozný bastl). pod Linuxem mi to chybělo, tak jsem zkoušel wpe/xwpe a rhide, což mělo oboje nějaké bindingy na gdb a šlo tam taky krokovat

    párkrát jsem vyzkoušel gdb přímo v textovém režimu, ale tento zážitek se mnou otřásl a hluboce mě vnitřně poznamenal. takže od té doby se snažím, abych věděl, co se v mých programech děje a proč nefungují, a nebylo potřeba podstupovat tak drastická opatření.
    REDGUY
    REDGUY --- ---
    XCHAOS: Znamena to, ze tvoje programy neobsahuji chyby, takze je nemusis debuggovat? A jak velke programy tinhle stylem pises?
    ANT_39
    ANT_39 --- ---
    XCHAOS: tak princip debug informace chápu
    Ok, nevedel jsem, na co se ptas. Jinak je to proste cteni debuginfa, no. Vetsinu zajimave prace odvadi libdwfl, ktery resi kam v pameti se co namapovalo, hleda oddeleny debuginfa, prepocitava adresy, atd. Ta reflexni knihovna samotna je jen pomerne tenky wrapper kolem toho, dohromady to moc nedela.

    Jinak {,eu-}readelf -w umi Dwarf dumpnout v lidsky citelne podobe, tak se clovek muze podivat co jak vypada, jestli ho to zajima. Je to takovy XML pro popis struktury binarek.
    _BENNY
    _BENNY --- ---
    XCHAOS: znouzectnost
    XCHAOS
    XCHAOS --- ---
    _BENNY: asi záleží na tom, co programuješ a jakým stylem. jistě sis všiml, že já se dost snažím o používání už oddebugovaných "design patterns", že jo... nikomu to necpu, ale faktem je, že dnes mi kód, který se přeloží, taky ve většině případů i běží (jistě... najdou se vyjímky...)
    _BENNY
    _BENNY --- ---
    bez debuggeru bych dnes ani nevstal z postele
    XCHAOS
    XCHAOS --- ---
    ANT_39: tak princip debug informace chápu - víceméně, minimálně to umím to odstranit příkazem strip :-) pár experimentů jsem dělal i s gdb (ale víceméně, přechod z DOSu pod Linux pro mě znamenal, že jsem se odnaučil debuggery používat - a místo toho do svých programů vkládám různé debugovací reporty.. ale to není podstatné)

    já jsem právě z toho odkazu pochopil, že It works by interpreting Dwarf debugging information stored at the binary itself.. V podstatě nic proti tomu - jen že je to ještě šílenější, než moje skromné pokusy přiblížit použití Céčka vyšším jazykům :-)
    ANT_39
    ANT_39 --- ---
    XCHAOS: Ladici informace se k binarkam pribaluji, aby debugger umel interpretovat pametovy obraz procesu, protoze v nativnich jazycich jsou jinak vsechno plocha data, kde nepoznas co je co. Aby debugger dokazal ty data interpretovat, potrebuje spoustu informaci: mapovani instrukci na radky kodu, informace pro odrolovani stacku (aby ti mohl ukazat, kde ti to spadlo), informace o jednotlivych funkcich a typech, o tom, kde je ktera promenna v jednotlivych okamzicich sveho zivota (v registru, v pameti, nebo vyoptimalizovana, a jeji hodnota se da spocitat takhle, atd.) Velike lehkotonazni variantou tehoz je tabulka symbolu. Runtime to normalne k zivotu nepotrebuje, je to informace pro debugger (a trasovatka atd.) Kdyz binarku stripnes, tak se to vsechno odstrani, a na beh to nema vliv.

    Tu samou informaci muzes samozrejme pouzit i zevnitr procesu samotneho, k reflexi, i kdyz je to divnost a osobne nevim, ze by to nekdo delal. Kdyz binarku stripnes, tak to prestane fungovat.

    (Vetsina linuxovych dister shipuje binarky stripnuty, a ladici informace se dodavaji v -debuginfo balicich. libdwfl tenhle model podporuje, akorat by potom holt balik musel zaviset na svem vlastnim debuginfu.)
    XCHAOS
    XCHAOS --- ---
    ANT_39: jako mě to celkem zaujalo, že runtime pracuje s nějakými debug informacemi v binárce. mohl by si stručně popsat, jak to funguje a k čemu je to dobré?
    ANT_39
    ANT_39 --- ---
    XCHAOS: Pripominam, ze jsme se k tomu dostali pres VPATH make. To, ze jsem to shodou okolnosti pouzil v obskurni knihovne, je prave jen shoda okolnosti. Rozhodne to neni reakce na nic. Btw, linkoval jsem to cca pul roku zpatky vedle v C/C++ klubu.
    XCHAOS
    XCHAOS --- ---
    ALMAD: a kde to píšu já? (že on to tvrdí)
    ALMAD
    ALMAD --- ---
    XCHAOS: ...remind me again, kde ant pise, ze je to vec vhodna pro zacatecniky, programovani na webu a vyuku?
    XCHAOS
    XCHAOS --- ---
    vypadá to, že na moje pokusy vytvořit přiměřeně nesrozumitelný toolkit v rámci čistého C tady kdosi reagoval zveřejněním něčeho ještě o několik řádů obskurnějšího a nesrozumitelnějšího... :-) já se aspon' snažil omezit to na compile-time triky :-)
    Kliknutím sem můžete změnit nastavení reklam