首页 > 解决方案 > Android Ndk - 为 C++ 线程设置名称

问题描述

我正在尝试使用 Android Profiler 分析我的代码。问题是命名我的 C++ 线程,我尝试使用:

pthread_setname_np(pthread_self(), "MyThread");

但它不显示指定的名称。如何在 Android 上命名我的 C++ 线程?

标签: androidc++android-studioandroid-ndkandroid-profiler

解决方案


  1. 获取对您的 JavaVM 的引用:
JavaVM* jvm;
env->GetJavaVM(&jvm);
  1. 在将线程附加到 JVM 时设置名称:
std::thread myThread([jvm](){
  JNIEnv* myNewEnv;
  JavaVMAttachArgs args;
  args.version = JNI_VERSION_1_6;
  args.name = "Fancy Thread";
  args.group = NULL;
  jvm->AttachCurrentThread((JNIEnv**)&myNewEnv, &args);

  while(1){
   // ....
  }

});
  1. 您现在将在 Android Studio 调试器中看到正确的线程名称。

推荐阅读