Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

打印主线程堆栈的问题

Ouverte
#94 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
32/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
android, java
Domaine
mobile, performance

Piste de recherche

Commencez par StackSampler.doSample, en particulier par l’appel à mCurrentThread.getStackTrace(), et reproduisez le cas signalé en plaçant une attente de 10 secondes avant l’échantillonnage. Comparez la pile capturée avec l’emplacement où le thread principal est bloqué. Le travail est terminé lorsque la question soulevée par l’issue concernant l’exactitude de la pile signalée est vérifiée et que l’échec observé dispose d’une résolution définie.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

有一个问题:

关于打印主线程堆栈的实现:

StackSampler 的 doSimple 实现如下

`protected void doSample() {
StringBuilder stringBuilder = new StringBuilder();

    for (StackTraceElement stackTraceElement : mCurrentThread.getStackTrace()) {
        stringBuilder
                .append(stackTraceElement.toString())
                .append(BlockInfo.SEPARATOR);
    }
    Log.e(TAG, stringBuilder.toString());

    synchronized (sStackMap) {
        if (sStackMap.size() == mMaxEntryCount && mMaxEntryCount > 0) {
            sStackMap.remove(sStackMap.keySet().iterator().next());
        }
        sStackMap.put(System.currentTimeMillis(), stringBuilder.toString());
    }
}`

当前只是直接 通过调用 mCurrentThread 的 getStackTrace 来获取堆栈信息,但是这个时候如果在这个方法之前有耗时的操作(比如直接sleep(10 * 1000)),那么再去获取主线程堆栈信息的时候是不是可能出现获取的堆栈不是真正出问题的地方?

在我自己测试的情况下,已经是无法正常打印堆栈信息。

Langage dominant
Java
Étoiles
6.7k
Forks
1k
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de markzhai/AndroidPerformanceMonitor

Toutes les issues de markzhai/AndroidPerformanceMonitor

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.