【Android 系统中使用CallStack类来追踪获取和操作调用栈信息】

Android系统CallStack类的使用

    • 定义
    • 使用方法
    • 使用场景
    • 注意事项
    • 应用举例

定义

在 Android 系统中,CallStack 类是一个用于获取和操作调用栈信息的工具类。这个类通常用于调试和日志记录,以帮助开发者了解函数调用的顺序和位置。以下是您提供的代码片段的解释和使用场景:

使用方法

  1. 在调试的文件中添加头文件
#include <utils/CallStack.h>
  1. 在构建脚本中添加库:libutilscallstack
    在Android.bp或者Android.mk文件中把libutilscallstack库文件包进去。
  • 对于 Android.bp
    cc_library {name: "libmylibrary",srcs: ["my_file.cpp"],static_libs: ["libutilscallstack"],
    }
    
  • 对于 Android.mk
    LOCAL_SHARED_LIBRARIES+= libutilscallstack
    
  1. 创建 CallStack 实例
    android::CallStack cs("String");
    
    这行代码创建了一个 CallStack 对象 cs,并初始化它。"String" 是一个标签,用于标识这个调用栈的用途或来源。这个标签可以是任何字符串,有助于在日志或调试输出中识别特定的调用栈实例。

使用场景

CallStack 类通常用于以下场景:

  • 异常处理:在捕获异常时,使用 CallStack 来记录导致异常的函数调用序列。
  • 性能分析:在性能关键的部分,使用 CallStack 来追踪函数调用,以便了解哪些函数是性能瓶颈。
  • 日志记录:在日志消息中包含调用栈信息,以帮助开发者或技术支持人员了解日志消息的来源。
  • 调试辅助:在调试过程中,使用 CallStack 来验证函数调用的顺序和层次结构。

注意事项

  • CallStack 类的具体实现和功能可能会根据不同的 Android 版本和平台有所不同。
  • 使用 CallStack 可能会引入一定的性能开销,因为它需要捕获和存储调用栈信息。因此,在性能敏感的应用中,应谨慎使用。
  • 确保在您的项目中正确包含了 CallStack 所需的头文件和库文件,否则您的代码可能会编译失败。

应用举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打印没有

10-25 10:15:56.707  2531  3090 D Vaccine : #00 pc 000000000001e684  /vendor/lib64/libcam.hal3a.v3.so (NS3Av3::Hal3AAdapter3::parseMeta(std::__1::vector<NS3Av3::MetaSet_T*, std::__1::allocator<NS3Av3::MetaSet_T*> > const&, char const*)+172)
10-25 10:15:56.707  2531  3090 D Vaccine : #01 pc 000000000001b764  /vendor/lib64/libcam.hal3a.v3.so (NS3Av3::Hal3AAdapter3::setNormal(std::__1::vector<NS3Av3::MetaSet_T*, std::__1::allocator<NS3Av3::MetaSet_T*> > const&)+1960)
10-25 10:15:56.707  2531  3090 D Vaccine : #02 pc 000000000001e3dc  /vendor/lib64/libcam.hal3a.v3.so (NS3Av3::Hal3AAdapter3::set(std::__1::vector<NS3Av3::MetaSet_T*, std::__1::allocator<NS3Av3::MetaSet_T*> > const&)+8)
10-25 10:15:56.707  2531  3090 D Vaccine : #03 pc 000000000001e284  /vendor/lib64/libcam.hal3a.v3.so (NS3Av3::Hal3AAdapter3::startRequestQ(std::__1::vector<NS3Av3::MetaSet_T*, std::__1::allocator<NS3Av3::MetaSet_T*> > const&)+2084)
10-25 10:15:56.707  2531  3090 D Vaccine : #04 pc 00000000000dea24  /vendor/lib64/libmtkcam_hwnode.so (NSCam::v3::NSP1Node::P1NodeImp::hardwareOps_request()+2812)
10-25 10:15:56.707  2531  3090 D Vaccine : #05 pc 00000000000c8794  /vendor/lib64/libmtkcam_hwnode.so (NSCam::v3::NSP1Node::P1NodeImp::runQueue(android::sp<NSCam::v3::IPipelineFrame> const&)+9912)
10-25 10:15:56.707  2531  3090 D Vaccine : #06 pc 00000000000d69d4  /vendor/lib64/libmtkcam_hwnode.so (NSCam::v3::NSP1Node::P1NodeImp::queue(android::sp<NSCam::v3::IPipelineFrame>)+444)
10-25 10:15:56.707  2531  3090 D Vaccine : #07 pc 0000000000072a78  /vendor/lib64/libmtkcam_pipeline.so (NSCam::v3::pipeline::NSPipelineContext::PipelineContext::PipelineContextImpl::sendFrameToRootNodes(android::sp<NSCam::v3::IPipelineFrame> const&, android::Vector<android::sp<NSCam::v3::IPipelineNode> >&)+428)
10-25 10:15:56.707  2531  3090 D Vaccine : #08 pc 0000000000072154  /vendor/lib64/libmtkcam_pipeline.so (NSCam::v3::pipeline::NSPipelineContext::PipelineContext::PipelineContextImpl::sendFrame(android::sp<NSCam::v3::IPipelineFrame> const&)+1628)
10-25 10:15:56.707  2531  3090 D Vaccine : #09 pc 0000000000071ac8  /vendor/lib64/libmtkcam_pipeline.so (NSCam::v3::pipeline::NSPipelineContext::PipelineContext::PipelineContextImpl::submitOneFrame(android::sp<NSCam::v3::IPipelineFrame> const&)+392)
10-25 10:15:56.707  2531  3090 D Vaccine : #10 pc 0000000000071794  /vendor/lib64/libmtkcam_pipeline.so (NSCam::v3::pipeline::NSPipelineContext::PipelineContext::PipelineContextImpl::submitFrame(std::__1::vector<android::sp<NSCam::v3::IPipelineFrame>, std::__1::allocator<android::sp<NSCam::v3::IPipelineFrame> > > const&)+116)
10-25 10:15:56.707  2531  3090 D Vaccine : #11 pc 000000000003d7a0  /vendor/lib64/libmtkcam_pipelinemodel_session.so (NSCam::v3::pipeline::model::PipelineModelSessionDefault::onProcessEvaluatedFrame(unsigned int&, unsigned int&, NSCam::v3::pipeline::model::PipelineModelSessionBasic::ProcessEvaluatedFrame const&)+3584)
10-25 10:15:56.708  2531  3090 D Vaccine : #12 pc 0000000000038f38  /vendor/lib64/libmtkcam_pipelinemodel_session.so (NSCam::v3::pipeline::model::PipelineModelSessionBasic::processEvaluatedFrame(NSCam::v3::pipeline::model::PipelineModelSessionBasic::ProcessEvaluatedFrame const&)+616)
10-25 10:15:56.708  2531  3090 D Vaccine : #13 pc 0000000000047438  /vendor/lib64/libmtkcam_pipelinemodel_session.so (NSCam::v3::pipeline::model::PipelineModelSession4Cell::submitOneRequest(std::__1::shared_ptr<NSCam::v3::pipeline::model::ParsedAppRequest> const&)+3224)
10-25 10:15:56.708  2531  3090 D Vaccine : #14 pc 0000000000032090  /vendor/lib64/libmtkcam_pipelinemodel_session.so (NSCam::v3::pipeline::model::PipelineModelSessionBase::submitRequest(std::__1::vector<std::__1::shared_ptr<NSCam::v3::pipeline::model::UserRequestParams>, std::__1::allocator<std::__1::shared_ptr<NSCam::v3::pipeline::model::UserRequestParams> > > const&, unsigned int&)+1072)
10-25 10:15:56.708  2531  3090 D Vaccine : #15 pc 000000000000e468  /vendor/lib64/libmtkcam_pipelinemodel.so (NSCam::v3::pipeline::model::PipelineModelImpl::submitRequest(std::__1::vector<std::__1::shared_ptr<NSCam::v3::pipeline::model::UserRequestParams>, std::__1::allocator<std::__1::shared_ptr<NSCam::v3::pipeline::model::UserRequestParams> > > const&, unsigned int&)+212)
10-25 10:15:56.708  2531  3090 D Vaccine : #16 pc 0000000000025f00  /vendor/lib64/libmtkcam_device3_hal.so (NSCam::v3::CameraDevice3SessionImpl::onProcessCaptureRequest(std::__1::vector<NSCam::v3::CaptureRequest, std::__1::allocator<NSCam::v3::CaptureRequest> > const&, unsigned int&)+5668)
10-25 10:15:56.708  2531  3090 D Vaccine : #17 pc 000000000002c124  /vendor/lib64/libmtkcam_device3_hal.so (NSCam::v3::CameraDevice3SessionImpl::processCaptureRequest(std::__1::vector<NSCam::v3::CaptureRequest, std::__1::allocator<NSCam::v3::CaptureRequest> > const&, unsigned int&)+260)
10-25 10:15:56.708  2531  3090 D Vaccine : #18 pc 000000000001af98  /vendor/lib64/libmtkcam_device3_hidl.so (NSCam::hidl_dev3::HidlCameraDeviceSession::processCaptureRequest_3_4(android::hardware::hidl_vec<android::hardware::camera::device::V3_4::CaptureRequest> const&, android::hardware::hidl_vec<android::hardware::camera::device::V3_2::BufferCache> const&, std::__1::function<void (android::hardware::camera::common::V1_0::Status, unsigned int)>)+692)
10-25 10:15:56.708  2531  3090 D Vaccine : #19 pc 000000000001b524  /apex/com.android.vndk.v30/lib64/android.hardware.camera.device@3.4.so (android::hardware::camera::device::V3_4::BnHwCameraDeviceSession::_hidl_processCaptureRequest_3_4(android::hidl::base::V1_0::BnHwBase*, android::hardware::Parcel const&, android::hardware::Parcel*, std::__1::function<void (android::hardware::Parcel&)>)+564)
10-25 10:15:56.708  2531  3090 D Vaccine : #20 pc 00000000000265b8  /apex/com.android.vndk.v30/lib64/android.hardware.camera.device@3.6.so (android::hardware::camera::device::V3_6::BnHwCameraDeviceSession::onTransact(unsigned int, android::hardware::Parcel const&, android::hardware::Parcel*, unsigned int, std::__1::function<void (android::hardware::Parcel&)>)+1176)
10-25 10:15:56.708  2531  3090 D Vaccine : #21 pc 0000000000082700  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::BHwBinder::transact(unsigned int, android::hardware::Parcel const&, android::hardware::Parcel*, unsigned int, std::__1::function<void (android::hardware::Parcel&)>)+72)
10-25 10:15:56.708  2531  3090 D Vaccine : #22 pc 0000000000086678  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::IPCThreadState::getAndExecuteCommand()+1076)
10-25 10:15:56.708  2531  3090 D Vaccine : #23 pc 00000000000878e4  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::IPCThreadState::joinThreadPool(bool)+96)
10-25 10:15:56.708  2531  3090 D Vaccine : #24 pc 0000000000096b88  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::PoolThread::threadLoop()+24)
10-25 10:15:56.708  2531  3090 D Vaccine : #25 pc 0000000000015334  /apex/com.android.vndk.v30/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
10-25 10:15:56.708  2531  3090 D Vaccine : #26 pc 0000000000014bf8  /apex/com.android.vndk.v30/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
10-25 10:15:56.708  2531  3090 D Vaccine : #27 pc 00000000000ecacc  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
10-25 10:15:56.708  2531  3090 D Vaccine : #28 pc 000000000008d340  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
10-25 10:15:56.708  2531  3090 D Hal3Av3 : ontim entry.tag is bad tag!
10-25 10:15:56.708 30039 30590 D InsetsAnimationCtrlImpl: Animation finished abruptly.
10-25 10:15:56.708  2531  3090 D Hal3Av3 : ontim entry  isEmpty!
10-25 10:15:56.708  2531  3090 D Hal3Av3 : [parseMeta] Set Manual Pline Index back to 0
10-25 10:15:56.708  2531  3090 D Hal3Av3 : [parseMeta] Set Custom Pline Mode back to 0

整理调用关系如下

@startuml
vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/common/hal3a/v3.0/Hal3AAdapter3.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/hwnode/p1/P1NodeImp.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/pipeline/PipelineContextImpl.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/pipeline/PipelineContext.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/session/PipelineModelSessionDefault.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/session/PipelineModelSessionBasic.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/session/PipelineModelSession4Cell.cpp
vendor/mediatek/proprietary/hardware/mtkcam/middleware/v3/pipeline/adapter/PipelineModelManagerImpl.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/session/PipelineModelSessionBase.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/pipeline/model/PipelineModelImpl.cpp
vendor/mediatek/proprietary/hardware/mtkcam/main/hal/device/3.x/device/CameraDevice3SessionImpl.cpp
vendor/mediatek/proprietary/hardware/mtkcam3/main/hal/entry/hidl/device/3.x/HidlCameraDeviceSession.cpp10-25 10:15:56.708  2531  3090 D Vaccine : #19 pc 000000000001b524  /apex/com.android.vndk.v30/lib64/android.hardware.camera.device@3.4.so (android::hardware::camera::device::V3_4::BnHwCameraDeviceSession::_hidl_processCaptureRequest_3_4(android::hidl::base::V1_0::BnHwBase*, android::hardware::Parcel const&, android::hardware::Parcel*, std::__1::function<void (android::hardware::Parcel&)>)+564)
10-25 10:15:56.708  2531  3090 D Vaccine : #20 pc 00000000000265b8  /apex/com.android.vndk.v30/lib64/android.hardware.camera.device@3.6.so (android::hardware::camera::device::V3_6::BnHwCameraDeviceSession::onTransact(unsigned int, android::hardware::Parcel const&, android::hardware::Parcel*, unsigned int, std::__1::function<void (android::hardware::Parcel&)>)+1176)
10-25 10:15:56.708  2531  3090 D Vaccine : #21 pc 0000000000082700  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::BHwBinder::transact(unsigned int, android::hardware::Parcel const&, android::hardware::Parcel*, unsigned int, std::__1::function<void (android::hardware::Parcel&)>)+72)
10-25 10:15:56.708  2531  3090 D Vaccine : #22 pc 0000000000086678  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::IPCThreadState::getAndExecuteCommand()+1076)
10-25 10:15:56.708  2531  3090 D Vaccine : #23 pc 00000000000878e4  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::IPCThreadState::joinThreadPool(bool)+96)
10-25 10:15:56.708  2531  3090 D Vaccine : #24 pc 0000000000096b88  /apex/com.android.vndk.v30/lib64/libhidlbase.so (android::hardware::PoolThread::threadLoop()+24)
10-25 10:15:56.708  2531  3090 D Vaccine : #25 pc 0000000000015334  /apex/com.android.vndk.v30/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
10-25 10:15:56.708  2531  3090 D Vaccine : #26 pc 0000000000014bf8  /apex/com.android.vndk.v30/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
10-25 10:15:56.708  2531  3090 D Vaccine : #27 pc 00000000000ecacc  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
10-25 10:15:56.708  2531  3090 D Vaccine : #28 pc 000000000008d340  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)HidlCameraDeviceSession.cpp --> CameraDevice3SessionImpl.cpp: static_cast<status_t>(mSession->processCaptureRequest(captureRequests, numRequestProcessed));
CameraDevice3SessionImpl.cpp --> CameraDevice3SessionImpl.cpp: onProcessCaptureRequest(v34Requests, cachesToRemove, numRequestProcessed);
CameraDevice3SessionImpl.cpp --> PipelineModelImpl.cpp: pPipelineModel->submitRequest(vPipelineRequests, numRequestProcessed);
PipelineModelImpl.cpp --> PipelineModelSessionBase.cpp: session->submitRequest(requests, numRequestProcessed);
PipelineModelSessionBase.cpp --> PipelineModelSession4Cell.cpp: submitOneRequest(reqs[i]);
PipelineModelSession4Cell.cpp --> PipelineModelSessionBasic.cpp: processEvaluatedFrame()
PipelineModelSessionBasic.cpp --> PipelineModelSessionDefault.cpp: onProcessEvaluatedFrame(lastFrameNo, lastZslFrameNo, in);
PipelineModelSessionDefault.cpp --> PipelineContext.cpp: in.pPipelineContext->queue(pplFrames)
PipelineContext.cpp --> P1NodeImp.cpp: getImpl()->submitFrame(frames);
P1NodeImp.cpp --> P1NodeImp.cpp: submitOneFrame(f);
P1NodeImp.cpp --> P1NodeImp.cpp: return sendFrame(pFrame);//PipelineContext::PipelineContextImpl::sendFrame();
P1NodeImp.cpp --> P1NodeImp.cpp: sendFrameToRootNodes(pFrame, vspPipelineNode)
P1NodeImp.cpp --> P1NodeImp.cpp: (*it)->queue(pFrame);
P1NodeImp.cpp --> P1NodeImp.cpp: runQueue(pFrame);
P1NodeImp.cpp --> P1NodeImp.cpp: hardwareOps_request();
P1NodeImp.cpp --> Hal3AAdapter3.cpp: mp3A->startRequestQ(ctrlQueue);
Hal3AAdapter3.cpp --> Hal3AAdapter3.cpp: Hal3AAdapter3::startRequestQ(const std::vector<MetaSet_T*>& requestQ)
Hal3AAdapter3.cpp --> Hal3AAdapter3.cpp: Hal3AAdapter3::set(const vector<MetaSet_T*>& requestQ)
Hal3AAdapter3.cpp --> Hal3AAdapter3.cpp: Hal3AAdapter3::setNormal(const vector<MetaSet_T*>& requestQ)
Hal3AAdapter3.cpp --> Hal3AAdapter3.cpp: parseMeta(requestQ, __FUNCTION__);\n case MTK_CONTROL_AF_MODE:
@enduml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8157.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 组件通信-自定义事件(七)

一、组件自定事件概念 自己定义的事件&#xff0c;包含事件名&#xff0c;事件回调等&#xff0c;定义好之后去给组件使用。也是一种组件的通信方式&#xff0c;适用于子组件传递给父组件。 二、 组件自定义事件实现子传父 1、在父组件中给子组件绑定一个自定义事件 在子组件标…

解决Qt Creator调试“warning: GDB: Failed to set controlling terminal“

本文档详细介绍了在Qt环境中遇到GDB提示Failed to set controlling terminal错误时的解决方案&#xff0c;步骤包括勾选Run in Terminal选项。适合开发者在调试过程中遇到此类问题时参考。 &"warning: GDB: Failed to set controlling terminal: \345\257\271\350\25…

nginx 部署2个相同的vue

起因&#xff1a; 最近遇到一个问题&#xff0c;在前端用nginx 部署 vue&#xff0c; 发现如果前端有改动&#xff0c;如果不适用热更新&#xff0c;而是直接复制项目过去&#xff0c;会404 因此想到用nginx 负载两套相同vue项目&#xff0c;然后一个个复制vue项目就可以了。…

城镇保障性住房管理:SpringBoot技术探索

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

ssm075学生信息管理系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 学生信息管理系统设计与实现 摘 要 传统办法管理学生信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff…

Linux学习笔记之运行级别和找回root密码

运行级别 运行级别介绍 0&#xff1a;关机 1&#xff1a;单用户&#xff08;找回丢失密码&#xff09; 2&#xff1a;多用户状态没有网络服务&#xff08;基本不用&#xff09; 3&#xff1a;多用户状态有网络服务&#xff08;常用&#xff0c;Xshell就是级别3&#xff09; 4&…

连接到Oracle数据库

使用SQL * Plus连接Oracle数据库服务器 SQL * Plus 是交互式查询工具&#xff0c;我们在安装 Oracle 数据库服务器或客户端时会自动安装。SQL * Plus 有一个命令行界面&#xff0c;允许您连接到 Oracle 数据库服务器并交互执行语句。 注意&#xff1a;如果有使用过 MySQL 或 P…

vue3记录(第一版)

vue2与vue3的区别 vue2属于选项式API,vue3属于组合式API setup概述 setup是vue3中一个新的配置项,值是一个函数,组件中所用到的数据,方法,计算属性,监视等等,均配置在setup中 vue3中的setup和vue2的data,methods之间有什么关系呢? 因为setup比data解析的早,所以在data中可以…

基于SpringBoot的城镇保障性住房管理策略

3系统分析 3.1可行性分析 通过对本城镇保障性住房管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本城镇保障性住房管理系统采用SSM框架&#xff0c;JA…

海南华志亿星电子商务有限公司赋能抖音商家成长

在当今瞬息万变的电商时代&#xff0c;抖音凭借其短视频与直播电商的独特模式&#xff0c;迅速崛起并引领潮流。在这场电商变革中&#xff0c;海南华志亿星电子商务有限公司以其卓越的服务质量和创新的运营模式&#xff0c;在抖音电商领域大放异彩&#xff0c;成为众多商家的首…

UnityAssetsBundle字体优化解决方案

Unity开发某个项目&#xff0c;打包后的apk包体已经高达1.25G了&#xff0c;这是非常离谱的。为了不影响用户体验&#xff0c;需要将apk包体缩小。因为项目本身不包含很多模型以及其他大型资源&#xff0c;排除法将AB包删除&#xff0c;发现app本身就100多M。 由此可以锁定是AB…

vxe-table 控制行拖拽按钮的权限控制,实现行拖拽后的二次确认

vxe-table 控制行拖拽按钮的权限控制&#xff0c;实现行拖拽后的二次确认 官网文档&#xff1a;https://vxetable.cn 当我们使用行拖拽排序时&#xff0c;由于需求的原因&#xff0c;可能需要控制特定的行不允许拖动以及拖动后增加二次确认提示框&#xff0c;最后再进行保存。…

【Linux】信号三部曲——产生、保存、处理

信号 1. 信号的概念2. 进程如何看待信号3. 信号的产生3.1. kill命令3.2. 终端按键3.2.1. 核心转储core dump3.2.2. OS如何知道键盘在输入数据 3.3. 系统调用3.3.1. kill3.3.2. raise3.3.3. abort 3.4. 软件条件3.4.1. SIGPIPE信号3.4.2. SIGALRM信号 3.5. 硬件异常3.5.1. 除零异…

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (9) - 编译现有的AWTK应用程序

AWTK 应用程序开发完成后&#xff0c;在配置文件中添加 harmonyos 的选项&#xff0c;通过create_project.py脚本即可生成 DevEco Studio的工程。 安装开发环境 DevEco Studio HarmonyOS 的开发工具。 Python 运行环境。 git 源码管理工具。 下载 awtk 和 awtk-harmonyos…

【推荐】iptables学习宝典

链接&#xff1a; IPtables-朱双印博客 学习iptables的抗鼎之作&#xff0c;推荐。

python+pptx:(三)添加统计图、删除指定页

目录 统计图 删除PPT页 from pptx import Presentation from pptx.util import Cm, Inches, Mm, Pt from pptx.dml.color import RGBColor from pptx.chart.data import ChartData from pptx.enum.chart import XL_CHART_TYPE, XL_LABEL_POSITION, XL_DATA_LABEL_POSITIONfil…

react 修改默认样式

.but :global(.ant-btn ) {color:red !important;font-size: 30px !important;} //在外面套一层 <div className{styles[but]}><Button type"primary" >Primary Button</Button> </div> import styles from ./index.less;

【MM-Align】学习基于输运的最优对齐动力学,快速准确地推断缺失模态序列

代码地址 - > github传送 abstract 现有的多模态任务主要针对完整的输入模态设置&#xff0c;即每个模态在训练集和测试集中要么是完整的&#xff0c;要么是完全缺失的。然而&#xff0c;随机缺失的情况仍然没有得到充分的研究。在本文中&#xff0c;我们提出了一种新的方…

这才是跑马灯该有的样子,用vue3-marquee刷新你的认知

这才是跑马灯该有的样子&#xff01;用vue3-marquee刷新你的认知&#xff01; 如果你曾经想为你的 Vue 3 项目增加一点视觉动感&#xff0c;那么 vue3-marquee 可能就是你要找的宝藏。它是一个无依赖的跑马灯组件&#xff0c;轻巧好用&#xff0c;让动画效果看起来比喝完咖啡后…

[每周一更]-(第122期):模拟面试|数据库面试思路解析

10|数据库索引:为什么 MySQL 用 B+ 树而不用 B 树? 为什么 MySQL 用 B+ 树而不用 B 树? 什么是覆盖索引? 什么是聚簇索引/非聚簇索引? 什么是哈希索引?MySQL InnoDB 引擎怎么创建一个哈希索引? 什么回表?如何避免回表? 树的高度和查询性能是什么关系? 什么是索引最左…