Jak otestovat funknost PC



Zdravim.koupil jsem si novou grafickou kartu (vymena) a stava se mi, ze se mi sam restartuje PC. zatím to dela jenom jeden program (konkretne awesome bump na generovani textur). program je v beta verzi, takze je dost pravdepodobny, ze je restart zpusoben tim.ale nevim to jiste, tak bych rad nejak otestoval PC, jestli je vse ok. nevite nekdo jak na to? zkousel jsem 3d software i nejakou tu hru a nespadlo to, ale nejsem si jistej. jde to nejak overit, jestli mam nekde problém v hardwaru, nebo je to jen ten jeden program?
Zdroj (přesný model, číslo ve wattech nestačí) + zbytek sestavy.
<p>můžete restartovat <code>gnome-shell</code> stisknutím <kbd>alt</kbd>+<kbd>f2</kbd> a poté zadejte buď „<em>restart</em>“ nebo jen „<em>r</em>“ a stiskněte <kbd>enter</kbd>.</p><p>jinak jsem si všiml, že se automaticky obnoví <code>.desktop</code> soubory po chvíli čekání.</p> <p>ubuntu wiki má <a href="https://help.ubuntu.com/community/reportingbugs">velmi důkladný průvodce</a> , který je dobře ilustrován a pokrývá mnoho možných scénářů.</p><p>podstatou této stránky je to, že nejprve potřebujete <a href="https://launchpad.net/+login">launchpad account</a> , pak stiskněte <kbd>alt</kbd>+<kbd>f2</kbd> a zadejte <code>ubuntu-bug packagename</code>. v 11.04 a novějších můžete zadat <code>ubuntu-bug -w</code> a klikněte na postižené okno.</p><p>na této wiki stránce jsou také popsány metody, které vám řeknou, jak:</p><ul> <li>chyby souborů proti spuštěným programům</li> <li>proti žádnému konkrétnímu balíčku ( <a href="https://wiki.ubuntu.com/bugs/findrightpackage">a jak se rozhodnout, který balíček</a> )</li> <li>az počítačů bez připojení k internetu.</li> </ul><p>existuje <a href="https://www.youtube.com/watch?v=18nsscrdia0">rychlé výukové video</a> , které vysvětluje lépe.</p><p>a další informace na tomto webu o tom, jak shromažďovat informace pro hlášení o chybě:</p><ul> <li> <a href="https://askubuntu.com/questions/109779/ive-got-internal-error-whilst-running-a-ubuntu-beta-how-to-gather-information">při spuštění ubuntu beta mám interní chybu. jak shromažďovat informace a zjistit, co to je?</a> </li> </ul> <p>nejobsáhlejší software pro testování zátěže, který jsem našel, je <a href="http://bit.ly/4r8g2l">hp loadrunner</a> (omlouvám se za bit.ly odkaz, ale hp odkaz je hrozný a nebude fungovat správně). je velmi flexibilní a ze zátěžových testů můžete generovat mnoho různých typů zpráv. můžete také nechat skupinu strojů pracovat společně s testem zatížení. ne, že ostatní nástroje jsou špatné, ale vypadá to jako <a href="http://jakarta.apache.org/jmeter/">apache jmeter</a> vypadá jako hračka.</p> <p>každý den v naší kanceláři probíhá výměna, která vypadá takto:</p><blockquote> <p>"člověče, miluji jen testy jednotek, právě jsem dokázal provést spoustu změn ve způsobu, jakým něco funguje, a pak jsem byl schopen potvrdit, že jsem nic neporazil opakováním testu ..."</p> </blockquote><p>podrobnosti se mění každý den, ale sentiment se nemění. jednotkové testy a vývoj řízený testem (tdd) mají tolik skrytých a osobních výhod, stejně jako ty zjevné, které vám někdo opravdu nedokáže vysvětlit, dokud to sami neučiní.</p><p>ale ignoruji to, tady je můj pokus!</p><ol> <li> <p>testy jednotek umožňují rychlé změny kódu. víte, že to funguje nyní, protože jste provedli testy, když provedete změny, které musíte provést, musíte testy znovu uvést do provozu. to šetří hodiny.</p> </li> <li> <p>tdd vám pomůže uvědomit si, kdy ukončit kódování. vaše testy vám dávají jistotu, že jste prozatím udělali dost, a mohou přestat vyladit a přejít k další věci.</p> </li> <li> <p>testy a kód spolupracují na dosažení lepšího kódu. váš kód může být špatný/buggy. váš test může být špatný/buggy. v tdd bankujete s pravděpodobností, že <strong>obojí</strong> špatné/buggy nízké. často je to test, který vyžaduje opravu, ale to je stále dobrý výsledek.</p> </li> <li> <p>tdd pomáhá při zácpě při kódování. když budete čelit velké a skličující práci před psaním testů, dostanete se rychle do pohybu.</p> </li> <li> <p>testy jednotek vám pomohou skutečně porozumět designu kódu, na kterém pracujete. místo toho, abyste psali kód, abyste něco udělali, začínáte tím, že nastíníte všechny podmínky, kterým je kód vystaven, a jaké výstupy od toho očekáváte.</p> </li> <li> <p>testy jednotek vám poskytují okamžitou vizuální zpětnou vazbu, všichni jsme rádi pocit všech těch zelených světel, když jsme to udělali. je to velmi uspokojivé. je také mnohem snazší vyzvednout si, kde jste přestali po přerušení, protože vidíte, kam jste se dostali - další červené světlo, které potřebuje opravit.</p> </li> <li> <p>na rozdíl od všeobecného vyznání víry jednotka neznamená psaní dvakrát tolik kódu, nebo kódování pomaleji. je to rychlejší a robustnější než kódování bez testů, jakmile to zvládnete. samotný testovací kód je obvykle relativně triviální a nepřispívá k tomu, co děláte, velkou režii. tohle budeš věřit jen tehdy, když to děláš :)</p> </li> <li> <p>myslím, že to byl fowler, kdo řekl: „nedokonalé testy, které probíhají často, jsou mnohem lepší než perfektní testy, které se nikdy nepíšou“. interpretuji to tak, že mi dovoluji psát testy, kde si myslím, že budou nejužitečnější, i když zbytek mého pokrytí kódem je žalostně neúplný.</p> </li> <li> <p>dobré jednotkové testy mohou pomoci dokumentovat a definovat, co má něco dělat</p> </li> <li> <p>jednotkové testy pomáhají s opakovaným použitím kódu. migrujte svůj kód <strong>a</strong> vaše testy do nového projektu. vylaďte kód, dokud se testy neběží znovu.</p> </li> </ol><p>hodně práce, se kterou se zabývám, se netestuje dobře unit unit (interakce s uživateli webových aplikací atd.), ale přesto jsme všichni testováni v tomto obchodě infikovaní a nejšťastnější, když máme testy svázané. nemohu doporučit přístup dostatečně vysoko.</p> Použij nějaké "Live CD"

[o106.com/...](http://o106.com/odvirovani-pocitace-s-windows-bootovatelna-live-cd-s-antiviry/) Je [prettify Automake](http://kim.tensta.gannert.se/projects/pretty-am/) , co chcete?







**Edit** : Jak Automake 1.10b, [tichý pravidla](http://www.gnu.org/software/hello/manual/automake/Options.html) je postavena-in. Není stejný kód nebo styl, ale podobný účinek. Nepřehlédněte kompilátor sám.


Přečtěte si dokumentaci kompilátor a najít všechny varování a chyby může poskytnout, a povolit tolik, kolik mají smysl pro vás.


Také se ujistěte, informujte svého kompilátoru k léčbě varování, jako jsou chyby, takže budete nuceni opravit hned. ( "-Werror" na gcc)


Také: „-Wall“ na gcc není *ani* umožnit všem varováním, nenechte se zmást.


Také také: check out Valgrind - it „automaticky detekovat [S] mnoho správy paměti a threading chyby a profil [s] rámci svých programů v detailu.“ (Zdarma!)


Valgrind není statický checker, ale je to skvělý nástroj! <http://valgrind.org> <p>můžete použít některou z těchto dvou jednoplášťových linek. oba přinášejí přesně stejný výkon na mém stroji a jsou přesnější než všechna dosud navrhovaná řešení (6. července 2014) v této otázce.</p><p><strong> pomocí <code>apt-mark</code>: </strong></p><pre><code>comm -23 &lt;(apt-mark showmanual | sort -u) &lt;(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^package: //p' | sort -u) </code></pre><p><strong> pomocí <code>aptitude</code>: </strong></p><pre><code>comm -23 &lt;(aptitude search '~i !~m' -f '%p' | sed "s/ *$//" | sort -u) &lt;(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^package: //p' | sort -u) </code></pre><p>jen velmi málo balíčků stále propadá trhlinami, ačkoliv mám podezření, že je uživatel skutečně nainstaloval <em> jsou</em>, a to buď hned po instalaci prostřednictvím nastavení lokalizace jazyka, nebo např. prostřednictvím instalátoru kodeků totem. také se zdá, že se hromadí i verze linuxových záhlaví, i když jsem nainstaloval pouze metapackage, který není specifický pro verzi. příklady:</p><pre><code>libreoffice-help-en-gb openoffice.org-hyphenation gstreamer0.10-fluendo-mp3 linux-headers-3.13.0-29 </code></pre><p><strong> jak to funguje: </strong></p><ol> <li>získejte seznam ručně nainstalovaných balíčků. pro aptitude další <code>sed</code> odstraní zbývající mezeru na konci řádku.</li> <li>seznam nainstalovaných balíčků získáte hned po nové instalaci.</li> <li>porovnejte soubory, vydejte pouze řádky v souboru 1, které nejsou v souboru 2.</li> </ol><p><strong> ostatní možnosti také nefungují: </strong></p><ul> <li>za použití <code>ubuntu-14.04-desktop-amd64.manifest</code> soubor ( <a href="http://releases.ubuntu.com/releases/trusty/ubuntu-14.04-desktop-amd64.manifest">zde</a> pro ubuntu 14.04) místo <code>/var/log/installer/initial-status.gz</code>. další balíčky jsou zobrazeny jako ručně nainstalované, i když nejsou.</li> <li>použitím <code>apt-mark showauto</code> namísto <code>/var/log/installer/initial-status.gz</code>. <code>apt-mark</code> například nezahrnuje balíček xserver-xorg, zatímco druhý soubor ano.</li> </ul><p>jako reference jsem použil různé další příspěvky stackexchange, žádné však nefungují a výše uvedené řešení:</p><ul> <li> <a href="https://unix.stackexchange.com/a/3624/49168">aptitude + manifest</a> </li> <li> <a href="https://unix.stackexchange.com/a/80520/49168">initial-status.gz + apt-mark showauto</a> </li> </ul><p>oba obsahují více balíčků než výše uvedené řešení.</p><p><strong> úprava: co dělat, pokud jste upgradovali z předchozí verze: </strong></p><p>pokud jste upgradovali ubuntu z jednoho vydání na další, budete pravděpodobně muset tento proces upravit. v takovém případě bych kromě souboru initial-status.gz z aktuální verze zkontroloval soubor manifestu novější verze (viz výše). můžete to snadno udělat pouhým přidáním dalšího srovnání. použití pouze souboru manifestu nebude fungovat, protože soubor manifestu bohužel neobsahuje vše, co soubor initial\_status.gz obsahuje (zaškrtl jsem).</p> <p><strong> poznámka: </strong> <em>toto bylo testováno na notebooku s grafickou kartou řízenou i915.</em></p><hr><h3>pozadí</h3><p><strong> poznámka: </strong> když je připojena nová obrazovka, do hostitele není odeslána žádná událost, zůstane to pravda i po mé poslední úpravě. jediným způsobem je tedy použít dotazování. snažím se, aby byly co nejefektivnější ...</p><h3>úprava # 3</h3><p>nakonec existuje jedno lepší řešení (prostřednictvím acpi):</p><p>stále neexistuje žádná událost, ale acpi se zdá být efektivnější než <code>xrandr</code> na dotaz. (poznámka: toto <strong> vyžaduje </strong> načtené moduly jádra acpi, ale nevyžaduje oprávnění root.</p><p>moje konečné řešení (pomocí bash):</p><pre><code>isvgaconnected() { local crtstate read -a &lt; /proc/acpi/video/vid/crt0/state crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } </code></pre><p>nyní test:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi yes </code></pre><p>je zapojen, takže ho nyní odpojím:</p><pre><code>$ if isvgaconnected; then echo yes; else echo no; fi no </code></pre><p><strong> poznámka: </strong> <code>${1:+*-1+1}</code> povolit argument <em>boolean</em>: pokud <em>něco je přítomno</em>, odpověď by byla obrácena: <code>( crtstate &gt;&gt; 4 ) * -1 + 1</code>.</p><p>a závěrečný skript:</p><pre><code>#!/bin/bash export crtprocentry=/proc/acpi/video/vid/crt0/state isvgaconnected() { local crtstate read -a &lt; $crtprocentry crtstate test $(( ( ${crtstate[1]} &gt;&gt;4 ) ${1:+*-1+1} )) -ne 0 } delay=.1 unset switch isvgaconnected || switch=not while :;do while isvgaconnected $switch;do sleep $delay done if [ "$switch" ];then unset switch echo vga is connected # doing something while vga is connected else switch=not echo vga is not connected. # doing something else, maybe. fi done </code></pre><p><strong> upozornění: </strong> <em>lehčí než <code>xrandr</code>, ale ne nevýznamné</em> se zpožděním menším než <em>,02</em> sekund, bash skript půjde na začátek procesu jedlíci zdrojů (<code>top</code>)!</p><p>i když to stojí ~ 0,001 s:</p><pre><code>$ time read -a &lt;/proc/stat crtstat </code></pre><p>vyžaduje to ~ 0,030 s:</p><pre><code>$ read -a &lt; /proc/acpi/video/vid/crt0/state crtstate </code></pre><p>to je velké! takže v závislosti na tom, co potřebujete, lze <code>delay</code> rozumně nastavit mezi <code>0.5</code> a <code>2</code>.</p><h3>úprava # 2</h3><p>nakonec jsem něco našel:</p><p><strong> důležité vyloučení odpovědnosti: </strong> hraní s <code>/proc</code> a <code>/sys</code> záznamy mohou poškodit váš systém !!! takže na produkčních systémech nezkoušejte následující.</p><pre><code>mapfile watchfilelist &lt; &lt;( find /sys /proc -type f 2&gt;/dev/null | grep -i acpi\\\|i91 ) prompt=("/" "|" '\' '-'); l=0 while :; do mapfile watchstat &lt; &lt;( grep -h . ${watchfilelist[@]} 2&gt;/dev/null ) for ((i=0;i&lt;=${#watchstat[@]};i++)); do [ "${watchstat[i]}" == "${oldstat[i]}" ] || echo ${watchstat[i]} done oldstat=("${watchstat[@]}") sleep .5 printf "\r%s\r" ${prompt[l++]} [ $l -eq 4 ]&amp;&amp;l=0 done </code></pre><p>... po očištění nežádoucích záznamů:</p><pre><code>for ((i=0;i&lt;=${#watchfilelist[@]};i++)); do [[ "${watchfilelist[$i]}" =~ /sys/firmware/acpi/interrupts/sci ]] &amp;&amp; unset watchfilelist[$i] &amp;&amp; echo $i done </code></pre><p>to jsem dokázal přečíst:</p><pre><code>/proc/acpi/video/vid/crt0/state:state: 0x1d /proc/acpi/video/vid/crt0/state:state: 0x0d /proc/acpi/video/vid/crt0/state:state: 0x1d </code></pre><p>když připojím, odpojte a znovu zapojte kabel monitoru.</p><p>při dotazu na konfiguraci (spuštění <code>system/preferences/monitor</code> nebo <code>xrandr</code>), grafické karty udělají typ <em>scan</em>, takže běží <code>xrandr -q</code> vám dá informace, ale musíte zjistit stav.</p><p>prohledal jsem všechny protokoly (jádro, démona, x atd.) prohledávajícím <code>/proc</code> &amp; <code>/sys</code> a zjevně se zdá, že neexistuje nic, co by vyhovovalo vaší žádosti.</p><p>zkusil jsem to také:</p><pre><code>export spc50="$(printf "%50s" "")" watch -n1 ' find /proc/acpi/video -type f | xargs grep -h . | sed "s/^\([^:]*):/\1'$spc50'}:/; s/^\(.\{50\}\) *:/\1 /"' </code></pre><p>po tom všem, když spustíte <code>system/preferences/monitor</code> zatímco nebyla připojena žádná nová obrazovka ani odpojena, bude se nástroj zobrazovat jednoduše (normálně). ale pokud jste již dříve připojili nebo odpojili obrazovku, občas spustíte tento nástroj a uvidíte, že na ploše vytvoříte typ <em>reset</em> ​​nebo <em>obnovit</em> ​​(stejný pokud spustíte <code>xrandr</code>).</p><p>zdá se, že to potvrzuje, že tento nástroj požádá o <code>xrandr</code> (nebo pracuje stejným způsobem) pravidelným dotazováním na stav, počínaje okamžikem jeho spuštění.</p><p>můžete vyzkoušet sami:</p><pre><code>$ for ((i=10;i--;)); do xrandr -q | grep ' connected' | wc -l; sleep 1; done 1 1 1 2 2 2 1 1 1 1 </code></pre><p>tím se na 10 sekund zobrazí počet připojených obrazovek (displejů).</p><p>zatímco to běží, připojte a/nebo odpojte obrazovku/monitor a podívejte se, co se děje. takže byste mohli vytvořit malou testovací funkci bash:</p><pre><code>isvgaconnected() { local xrandr=$(xrandr -q) [ "$xrandr" == "${xrandr#*vga1 con}" ] || return 0 return 1 } </code></pre><p>který by byl použitelný jako v:</p><pre><code>$ if isvgaconnected; then echo yes; fi </code></pre><p>ale buďte opatrní, <code>xrandr</code> trvá asi <strong> 0,140 s do 0.200 s </strong>, zatímco na zástrčkách nedojde k žádné změně a do <strong> 0,770 sekund </strong> kdykoli něco bylo připojeno nebo odpojeno těsně před (<strong> poznámka: </strong> zdá se, že to není zdrojový zdroj).</p><h3>úprava # 1</h3><p>abych zajistil, že neučím něco nesprávného, ​​prohledával jsem web a dokumenty, ale nenašel jsem nic o <em>dbus and screens</em>.</p><p>nakonec jsem běžel ve dvou různých oknech <code>dbus-monitor --system</code> (hrál jsem také s možnostmi) a malý skript, který jsem napsal:</p><pre><code>$ for ((i=1000;i--;)); do isvgaconnected &amp;&amp; echo yes || echo no; sleep .5; done </code></pre><p>... a znovu zapojen, než odpojen monitor, mnohokrát. takže teď mohu říci:</p><ul> <li><em>v této konfiguraci <strong> pomocí ovladače i915 </strong> neexistuje jiný způsob, než spustit <code>xrandr -q</code> vědět, zda je monitor připojen nebo ne.</em></li> </ul><p>ale buďte opatrní, protože se nejeví jiné způsoby. například se zdá, že <code>xrandr</code> tyto informace sdílí, takže moje plocha gnome by se automaticky přepnula na <code>xinerama</code> automaticky ... <strong>, když jsem běžel <code>xrandr</code> </strong>.</p><h3>některé dokumenty</h3><ul> <li> <a href="https://wiki.archlinux.org/index.php/xrandr#toggle\_external\_monitor">skript pro přepínání interního/externího displeje pro notebooky</a> </li> <li> <a href="http://www.x.org/docs/intel/hd/ihd\_os\_vol\_3\_part4\_bjs.pdf">®intel hd graphics opensource programmer's reference manual</a> </li> </ul> <p><code>hi</code> je čas strávený přerušením zpracování hardwaru. hardwarová přerušení jsou generována hardwarovými zařízeními (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat do procesoru (například data dorazila).</p><p>protože k tomu může dojít velmi často a protože v podstatě blokují aktuální cpu, zatímco jsou spuštěny, jsou popisovače hardwarového přerušení jádra psány tak rychle, jak je to jen možné.</p><p>pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí mechanického volání <code>softirqs</code>. jsou naplánovány nezávisle, mohou běžet na jakémkoli cpu, mohou běžet souběžně (nic z toho neplatí pro popisovače přerušení hardwaru).</p><p><sub>část o tvrdých irq blokujících aktuální procesor a část o tom, že <code>softirqs</code> budou moci běžet kdekoli, nejsou úplně správné, mohou existovat omezení a některé tvrdé irq mohou přerušit jiné.</sub></p><p>jako příklad lze uvést, že hardwarové přerušení ze síťové karty „přijatá data“ by mohlo jednoduše uložit informace „karta ethx musí být obsluhována“ a naplánovat <code>softirq</code>. <code>softirq</code> by byla věc, která spouští skutečné směrování paketů.</p><p><code>si</code> představuje čas strávený v těchto <code>softirqs</code>.</p><p>dobré čtení o mechanismu <code>softirq</code> (s trochou historie) je také <a href="https://www.cs.unca.edu/brock/classes/spring2013/csci331/notes/paper-1130.pdf">dělám to později: softirqs, tasklets, dolní poloviny, fronty úkolů, pracovní fronty a časovače</a> = (pdf, 64 kb).</p><p><code>st</code>, „ukrást čas“, je relevantní pouze ve virtualizovaných prostředích. představuje čas, kdy skutečný procesor nebyl k dispozici aktuálnímu virtuálnímu počítači - byl „odcizen“ z toho vm) hypervizorem (buď pro spuštění jiného vm, nebo pro vlastní potřeby).</p><p>dokument <a href="https://www.ibm.com/developerworks/linux/linux390/perf/tuning\_cputimes.html">cpu time accounting</a> od ibm obsahuje více informací o krádeži času a účetnictví cpu ve virtualizovaných prostředích. (zaměřuje se na hardware typu zseries, ale obecná myšlenka je stejná pro většinu platforem.)</p>