【问题标题】:Android Ndk - Setting a name for a C++ threadAndroid Ndk - 为 C++ 线程设置名称
【发布时间】:2018-05-14 09:58:41
【问题描述】:

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

pthread_setname_np(pthread_self(), "MyThread");

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

【问题讨论】:

  • 检查pthread_setname_np返回的值。例如,名称的长度可能有限制。
  • 返回值为0,所以调用成功

标签: android c++ android-studio android-ndk android-profiler


【解决方案1】:
  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 调试器中看到正确的线程名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多