android - Android Ndk - 为 C++ 线程设置名称
问题描述
我正在尝试使用 Android Profiler 分析我的代码。问题是命名我的 C++ 线程,我尝试使用:
pthread_setname_np(pthread_self(), "MyThread");
但它不显示指定的名称。如何在 Android 上命名我的 C++ 线程?
解决方案
- 获取对您的 JavaVM 的引用:
JavaVM* jvm;
env->GetJavaVM(&jvm);
- 在将线程附加到 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){
// ....
}
});
- 您现在将在 Android Studio 调试器中看到正确的线程名称。
推荐阅读
- sql-server - 如何在mssql中选择和加入同一个表
- java - PrintStream 打印没有时间创建文件
- r - addEventListener 以闪亮的谷歌地图自动关闭信息窗口
- presto - 我可以在不指定 --server 或 --catalog 的情况下执行 presto CLI
- json - 将包含对象数组的 json 传递给 PostgreSQL 函数会引发格式错误的数组文字。意外的数组元素
- ios - 在 React Native 中,有没有办法识别手写笔(笔)与触摸(手指)事件?
- javascript - 将 2 个或多个 JS 文件编译成 1 个
- android - 无法为首先位于屏幕外部的按钮设置点击监听器(然后在内部设置动画)
- html - 显示:flex 在 CSS 中不起作用
- xml - 使用 xmllint 和 xpath 在地理服务器 SLD 文件中提取属性版本的值