Dit is de opdracht traceview die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
traceview - een grafische viewer voor uitvoeringslogboeken opgeslagen door de Android-applicatie.
KORTE INHOUD
traceview [-r] traceren
PRODUCTBESCHRIJVING
Traceview is een grafische viewer voor uitvoeringslogboeken die u maakt met behulp van Debug
class om traceringsinformatie in uw code vast te leggen. Traceview kan u helpen bij het debuggen van uw
toepassing en profileer de prestaties ervan.
OPTIES
-r alleen maar regressie
TRACEVIEW LAYOUT
Wanneer u een traceringslogbestand hebt (gegenereerd door traceringscode toe te voegen aan uw toepassing of door
DDMS), kunt u Traceview de logbestanden laten laden en de gegevens ervan in een venster laten weergeven
visualiseert uw toepassing in twee panelen:
Een tijdlijnpaneel - beschrijft wanneer elke thread en methode is gestart en gestopt.
Een profielpaneel - geeft een samenvatting van wat er binnen een methode is gebeurd.
De onderstaande secties bieden aanvullende informatie over de traceview-uitvoervensters.
Timeline Paneel
De uitvoering van elke thread wordt in een eigen rij weergegeven, waarbij de tijd naar rechts toeneemt. Elk
methode wordt in een andere kleur weergegeven (kleuren worden op een round-robin-wijze hergebruikt, te beginnen met
de methoden die de meest inclusieve tijd hebben). De dunne lijnen onder de eerste rij
toon de omvang (van binnenkomst tot vertrek) van alle oproepen naar de geselecteerde methode. De methode binnen
dit geval is LoadListener.nativeVoltooid() en het werd geselecteerd in de profielweergave.
Profiel Paneel
Deze weergave toont een samenvatting van alle tijd die aan een methode is besteed. De tabel toont zowel de
inclusieve en exclusieve tijden (evenals het percentage van de totale tijd). Exclusief
tijd is de tijd die in de methode wordt doorgebracht. Inclusieve tijd is de tijd besteed aan de methode plus
de tijd die is doorgebracht in alle opgeroepen functies. We noemen aanroepmethoden 'ouders' en
methoden worden ‘kinderen’ genoemd. Wanneer een methode wordt geselecteerd (door erop te klikken), wordt deze uitgevouwen naar
laat ouders en kinderen zien. Ouders worden weergegeven met een paarse achtergrond en kinderen
met een gele achtergrond. In de laatste kolom van de tabel staat het aantal oproepen hiernaar
methode plus het aantal recursieve aanroepen. In de laatste kolom staat het aantal uitgaande oproepen
van het totale aantal oproepen naar die methode. In deze weergave kunnen we zien dat die er waren
14 oproepen naar LoadListener.nativeVoltooid(); als je naar het tijdlijnpaneel kijkt, zie je dat een van
die telefoontjes duurden ongewoon lang.
TRACEVIEW FILE FORMAT
Tracing creëert twee afzonderlijke stukken uitvoer: een gegevensbestand dat de traceergegevens bevat,
en een sleutelbestand, dat een mapping biedt van binaire identificaties naar thread en methode
namen. Wanneer het traceren is voltooid, worden de bestanden samengevoegd tot één enkel .trace-bestand.
Opmerking: De vorige versie van Traceview heeft deze bestanden niet voor u samengevoegd. als jij
Als u oude sleutel- en gegevensbestanden heeft die u nog steeds wilt traceren, kunt u deze samenvoegen
jezelf met kat mytrace.key mytrace.data > mytrace.trace.
Data Dien in Formaat
Het gegevensbestand is binair en als volgt gestructureerd (alle waarden worden opgeslagen in Little Endian
volgorde):
* Bestandsformaat:
* koptekst
* opnemen 0
* opnemen 1
* ...
*
* Koptekstformaat:
* u4 magie 0x574f4c53 ('LANGZAAM')
* u2-versie
* u2 offset ten opzichte van gegevens
* u8 startdatum/tijd in gebruikc
*
* Opnameformaat:
* u1 draad-ID
* u4 methode-ID | methode actie
* u4 tijdsdelta sinds start, in usec
Van de toepassing wordt verwacht dat zij alle koptekstvelden parseert en vervolgens probeert te compenseren met
data" vanaf het begin van het bestand. Van daaruit leest het gewoon records van 9 bytes totdat EOF is
bereikt.
u8 startdatum/-tijd in usec is de uitvoer van haaltijdvandag(). Het is er vooral zodat
u kunt zien of de uitvoer gisteren of drie maanden geleden is gegenereerd.
methodeactie bevindt zich in de twee minst significante bits van het methodewoord. De momenteel
gedefinieerde betekenissen zijn:
0 - invoer van methode
1 - methode afsluiten
2 - methode "verlaten" wanneer deze wordt uitgerold door uitzonderingsafhandeling
3 - (gereserveerd)
Een 32-bits geheel getal zonder teken kan ongeveer 70 minuten tijd in microseconden bevatten.
sleutel Dien in Formaat
Het sleutelbestand is een tekstbestand zonder opmaak, verdeeld in drie secties. Elke sectie begint met een
zoekwoord dat begint met '*'. Als u aan het begin van een regel een '*' ziet, heeft u de
begin van een nieuw gedeelte.
Een voorbeeldbestand zou er als volgt uit kunnen zien:
*versie
1
klok=wereldwijd
*draden
1 hoofd
6 JDWP-handler
5 Asynchrone GC
4 Referentie-handler
3 Afronder
2 Signaalafhandelaar
*methoden
0x080f23f8 java/io/PrintStream schrijven ([BII)V
0x080f25d4 java/io/PrintStream print (Ljava/lang/String;)V
0x080f27f4 java/io/PrintStream println (Ljava/lang/String;)V
0x080da620 java/lang/RuntimeException ()V
[...]
0x080f630c android/os/Debug startMethodTracing ()V
0x080f6350 android/os/Debug startMethodTracing (Ljava/lang/String;Ljava/lang/String;I)V
*einde
De volgende lijst beschrijft de belangrijkste secties van een sleutelbestand:
versie sectie
De eerste regel is het versienummer van het bestand, momenteel 1. De tweede regel, clock=global,
geeft aan dat we een gemeenschappelijke klok gebruiken voor alle threads. Een toekomstige versie kan per-
thread CPU-tijdtellers die onafhankelijk zijn voor elke thread.
draad sectie
Eén regel per draad. Elke regel bestaat uit twee delen: de thread-ID, gevolgd door a
tabblad, gevolgd door de naam van de thread. Er zijn weinig beperkingen op wat een geldige thread is
naam is, dus voeg alles toe aan het einde van de regel.
methoden sectie
Eén regel per in- of uitgang van de methode. Een lijn bestaat uit vier stukken, gescheiden door een tab
tekens: methode-ID [TAB] klassenaam [TAB] methodenaam [TAB] handtekening. Alleen de methoden
die daadwerkelijk zijn betreden of verlaten, worden in de lijst opgenomen. Let op: alle drie
ID's zijn vereist om een methode uniek te identificeren.
Noch de threads, noch de methodensecties zijn gesorteerd.
CREREN SPOOR FILES
Om Traceview te gebruiken, moet u logbestanden genereren die de gewenste traceringsinformatie bevatten
analyseren.
Er zijn twee manieren om traceerlogboeken te genereren:
Neem de klasse Debug op in uw code en roep de methoden aan om het loggen te starten en te stoppen
informatie naar schijf traceren. Deze werkwijze is zeer nauwkeurig omdat u dit in uw
codeer precies waar u moet beginnen en stoppen met het registreren van traceergegevens.
Gebruik de methodeprofileringsfunctie van DDMS om traceerlogboeken te genereren. Deze methode is minder
nauwkeurig omdat u de code niet wijzigt, maar eerder specificeert wanneer u moet beginnen en stoppen
loggen met een DDMS. Al heb je wel minder controle over waar de data zich precies bevinden
aangemeld, is deze methode handig als u geen toegang heeft tot de code van de toepassing, of
als u de nauwkeurigheid van de eerste methode niet nodig heeft.
Voordat u traceerlogboeken gaat genereren, moet u rekening houden met de volgende beperkingen:
Als u de klasse Debug gebruikt, moet uw apparaat of emulator een SD-kaart hebben en
uw toepassing moet toestemming hebben om naar de SD-kaart te schrijven.
Als u DDMS gebruikt, worden Android 1.5-apparaten niet ondersteund.
Als u DDMS gebruikt, moeten apparaten met Android 2.1 en eerder over een SD-kaart beschikken
en uw toepassing moet toestemming hebben om naar de SD-kaart te schrijven.
Als u DDMS gebruikt, hebben apparaten met Android 2.2 en hoger geen SD-kaart nodig. De
trace-logboekbestanden worden rechtstreeks naar uw ontwikkelmachine gestreamd.
Om de traceerbestanden te maken, neemt u de klasse Debug op en roept u een van de
startMethodTracing() methoden. In de aanroep geeft u een basisnaam op voor de traceerbestanden
die het systeem genereert. Bel om de tracering te stoppen stopMethodTracing(). Deze methoden beginnen
en stop de methodetracering over de gehele virtuele machine. Je zou bijvoorbeeld kunnen bellen
startMethodTracing() in uw activiteiten onCreate () methode en bel stopMethodTracing() in
die activiteit onDestroy () methode.
// start met traceren naar "/sdcard/calc.trace"
Debug.startMethodTracing("calc");
// stop met traceren
Debug.stopMethodTracing();
Wanneer uw toepassing belt startMethodTracing(), maakt het systeem een bestand met de naam
.spoor. Dit bevat de traceergegevens van de binaire methode en een toewijzingstabel
met thread- en methodenamen.
Het systeem begint vervolgens met het bufferen van de gegenereerde traceergegevens, totdat uw toepassing aanroept
stopMethodTracing(), waarna het de gebufferde gegevens naar het uitvoerbestand schrijft. Als de
systeem bereikt eerder de maximale buffergrootte stopMethodTracing() heet: het systeem
stopt met traceren en stuurt een melding naar de console.
Geïnterpreteerde code wordt langzamer uitgevoerd als profilering is ingeschakeld. Probeer niet te genereren
absolute timings van de profilerresultaten (dwz "functie X duurt 2.5 seconden om uit te voeren").
De tijden zijn alleen nuttig in relatie tot andere profieluitvoer, zodat u kunt zien of er wijzigingen zijn
hebben de code sneller of langzamer gemaakt.
Wanneer u de Android-emulator gebruikt, moet u een SD-kaart opgeven wanneer u uw AVD maakt
omdat de traceerbestanden naar de SD-kaart worden geschreven. Er moet toestemming zijn voor uw aanvraag
om ook naar de SD-kaart te schrijven.
KOPIËREN SPOOR FILES TO A HOST MACHINE
Nadat uw toepassing is uitgevoerd en het systeem uw traceerbestanden heeft gemaakt
.trace op een apparaat of emulator, moet u deze bestanden naar uw .trace kopiëren
ontwikkelingscomputer. U kunt adb pull gebruiken om de bestanden te kopiëren. Hier is een voorbeeld dat laat zien
hoe u een voorbeeldbestand, calc.trace, kopieert van de standaardlocatie op de emulator naar het
/ tmp map op de emulator-hostmachine:
adb pull /sdcard/calc.trace / tmp
COPYRIGHT
Deze handleiding is gelicentieerd onder de Apache-licentie, versie 2.0.
Copyright (C) 2013 Android Open Source-project
Copyright (C) 2013 Jakub Adam[e-mail beveiligd]>
Gebruik traceview online met behulp van onworks.net-services