Table of Contents
Uppdaterad
Under de senaste veckorna har ett antal användare rapporterat att testerna inte lyckades.
Namn = “indexterm-292″> ERROR -proben utlöses varje gång ett runtime-fel inträffar under runtime-erbjudandet för sonden DTrace. Till exempel, när en komplett sats försöker avreferera en pekare, kommer noll vanligtvis att starta en ERROR -sond, som visas i det här specifika exemplet på den här sidan.
Exempel 17-1 Fel. D-ingång : Fel
STARTA* (Tecken *) NULL;SKULDprintf ("fel upptäckt!");
Om du följer den här handledningen kommer du att verifiera en utdata som liknar följande:
Uppdaterad
Är du trött på att din dator går långsamt? Irriterad av frustrerande felmeddelanden? ASR Pro är lösningen för dig! Vårt rekommenderade verktyg kommer snabbt att diagnostisera och reparera Windows-problem samtidigt som systemets prestanda ökar dramatiskt. Så vänta inte längre, ladda ner ASR Pro idag!
Utdatat visar att ERROR -testet kördes och visar också att eventuell dtrace (1M) rapporterar ditt aktuella fel. dtrace har sin egen behörighet för någon ERROR -sond, så den kan rapportera problem. Genom att använda ERROR -testet kan ditt företag skapa sin egen anpassade beräkningsfelhantering.
arg1 |
Aktiverat sensor-ID (EPID) för varje sensor skadar felet |
arg2 |
Index över en åtgärd som orsakade felet |
arg3 |
DIF-offset för denna åtgärd plus -1 om inte tillämpligt |
arg4 |
Felvariant av |
arg5 |
Ett värde specifikt för typen av misstag |
Följande tabell beskriver de olika typerna av feltyper och vad arg5 kan ha för var och en:
arg4 värde
Beskrivning
arg5 värde
DTRACEFLT_INCONNU
Okänd feltyp
Nej
DTRACEFLT_BADADDR
Åtkomst till otilldelad eller bruten adress
Tillgång till adress
DTRACEFLT_BADALIGN
Utanpassat minne komma till
Tillgång till adress
DTRACEFLT_ILLOP
Olaglig eller möjligen ogiltig åtgärd
Nej
DTRACEFLT_DIVZERO
Dividera heltal med praktiskt taget inga
Nej
DTRACEFLT_NOSCRATCH
Inte tillräckligt med tom duk för att visa repor
Nej
DTRACEFLT_KPRIV
Försök att godkänna en kärnadress eller -egenskap utan korrekt lässkrivning
Åtkomstadress eller 6 om definitivt inte tillämpligt
DTRACEFLT_UPRIV
Försök att komma åt en användares adress eller totala fastighetsinvestering utan nödvändiga behörigheter
Tillgång till adress eller 0 om det inte är tillämpligt
DTRACEFLT_TUPOFLOW
DTrace volymparametrar stack overflow
Nej
Om åtgärderna som utförs i ERROR -exemplet vanligtvis orsakar ett fel själva, undertrycks felet utan tvekan urskillningslöst – ERROR -exemplet anses inte betecknas som rekursivt.
Säkerhet och buggar
Som tagits i beaktande tidigare är dynamisk spårning utformad för att tillämpas på ett säkert sätt i produktionssystem, men eftersom följande invaderar den specifika operativsystemkärnan, finns det utrymme för skadligt beteende:
- Dödliga specifikationer i kärnan, som att läsa ogiltiga straffavgifter (t.ex.
NULL
) eller faktiskt division med, borde orsaka panik efter varje omstart. - Att köra sonderna för ofta (eller för ofta) kan minska träningssystemets prestanda, eller kanske åtminstone leda till resultat som, enligt experter, skiljer sig mycket från ett system komplett med mycket svag övervakning (det vill säga, tävlingsinställningar som du mycket sällan behöver vara särskilt felsökt). …
- Dynamiska spårningssystem allokerar direktminne för sitt personliga interna minne, vilket måste finnas begränsat.
name = “__ genomsökning ___ Deadman_mechanism”> Detta leder till den underbara allmänna principen för alla dynamiska diagramdesigner: lägg till några några kontroller innan du gör den faktiska lära känna. DTrace har till exempel en “död man”-arbetsprinciper som gör att du kan upptäcka ett system som kanske inte svarar på och förfrågningar, på grund av dessa inducerade DTrace, som också avbryter spåret, även om SystemTap håller reda på den tid det tar i varje prov av spåret. Vanligtvis förblir praktiskt taget felmeddelanden som du ser av denna anledning -bearbetning avbruten: Avbryt på grund av ihållande brist på svar
i DTrace och SystemTap-Probe-Overhead föråldrad tröskel
… SystemTap < /p>
Tyvärr är detta mindre än lika effektivt som DTrace, vilket är anledningen till att ett telefonmeddelande om överbelastningsfelet utan tvekan är vanligt. För att fixa uppenbara buggar på din dator kan du kompilera om ditt eget skript med själva alternativet -t
för att se om din exempeltext är överbelastad och försöka optimera den längs vägen. Du kan också öka uthålligheten genom att ställa in kompileringsmakrot (med ett nytt -D
alternativ) till en stp_overload_threshold
procentandel av den totala CPU-effekten, förmodligen genom att ställa in den med STP_NO_OVERLOAD
-g --suppress-time-limits
).
En annan resurs som ingår är minne. Minnesgränser upprätthålls Helt enkelt: alla val måste bevisas göras vid skriptkörning och med en enorm fast storlek. När det gäller associativa arrayer, begränsar SystemTap antalet poster som den potentiellt kan acceptera (kan ändras genom att helt enkelt definiera en persons MAXMAPENTRIES
makro) och ERROR: flood, MAXMAPENTRIES systemkontroll bredvid id 't' inuti : 1: 30
, medan DTrace eliminerar den totala lagringen för detta företag med varje anpassad dynvarsize
och postar den i form av en dynamisk variabel waste
fel. Observera att SystemTap fortfarande kan ha slut på förmåga att komma ihåg. Så om du skapar för många associativa arrayer kommer det här verktyget att bearbetas av OOM, vilket kan göra att verktyget stap
dödar i princip. DTrace och SystemTap begränsar storleken på dessa rader i skript.
Transportbufferten mellan dess sonder och klienten är också begränsad. Så om du skrev ut sonder, förmodligen snabbare än vad konsumenten kanske vill, kommer du att se det mesta av felet Det fanns NN-transportfel
i SystemTap, möjligen DTrace-fall på CPU X
fel i DTrace. Svaret på det här problemet är enkelt: bli mindre omfattande, ta i allmänhet bort data från startprocessen (justerbar skapad av cleanrate
, konfigurerbar endast i DTrace), eller så kan det öka buffertstorleken ( bufsize
konfigurerbara i DTrace, och alternativet -s
i SystemTap).
DTrace och SystemTap kan också vara speciella genom att de använder sidfelshanterare i alla kärnor som stänger av panik och hanterar ånger när de utlöses av ett spår. DTrace klagar till exempel över Error Forward Enabled Probe ID 1 (ID 78: syscall :: read: entry): ledsen Alignment (0x197) åtgärd i # 1 i DIF offset 24
och fortsätter att köras under SystemTap ERROR : Läs felet [man error :: fel] på 0x00000000000024a8 (adress) bredvid hur '@cast'-leverantören på : 1: 45
och fortsätt spåra. Observera att SystemTap ger mer sammanhang för att DTrace. Detta beror på att felkontrollen har gjorts framgångsrikt i den genererade C-koden och inte på grund av den virtuella RISC-maskinen som finns i den viktigaste drivrutinen.
Demoskript
Dessa skriptfel kommer i felmeddelandena som beskrivs ovan. För associativa arrayer använder vi tidsstämplar för att fylla i en mängd icke-repeterande data:
För att demonstrera en divisionsöverträdelse kan du tolka en ogiltig heltalssats (fd på Solaris och filplats på Linux) som att den pekar på bäckens struktur och försöka komma åt dess fält.
Länkar
Få fart på din dator idag med denna enkla nedladdning.
Troubleshooting Tips For Defective Samples
Tips Voor Het Oplossen Van Problemen Met Defecte Monsters
Conseils De Dépannage Pour Les échantillons Défectueux
Suggerimenti Per La Risoluzione Dei Problemi Per I Campioni Difettosi
Sugerencias Para La Resolución De Problemas De Muestras Defectuosas
Советы по поиску и устранению неисправностей дефектных образцов
Dicas De Solução De Problemas Para Amostras Defeituosas
Tipps Zur Fehlerbehebung Bei Defekten Proben
Wskazówki Dotyczące Rozwiązywania Problemów Z Wadliwymi Próbkami
결함이 있는 샘플에 대한 문제 해결 팁