当前位置: 首页 > news >正文

TVM中Python如何和C++联调?

1. 编译 Debug 版本

# 在项目根目录下创建构建目录(若尚未创建)
mkdir -p build && cd build# 配置 Debug 构建
cmake -DCMAKE_BUILD_TYPE=Debug ..# 编译(根据 CPU 核心数调整 -j 参数)
make -j$(nproc)

2. 获取 Python 进程 PID

在 Python 脚本的 最开头 添加以下代码,用于打印 PID 并暂停等待输入(方便后续附加 GDB):

import os
print("pid:", os.getpid())
input("Press Enter to continue...")  # 阻塞,直到在终端敲回车

3. 启动 GDB 附加进程

3.1 允许非 Root 用户调试

在 Ubuntu 中默认限制普通用户调试其他进程,需临时解除限制:

echo "0" | sudo tee /proc/sys/kernel/yama/ptrace_scope

注意:此操作需 sudo 权限,且重启后失效。若需永久生效:

sudo sysctl -w kernel.yama.ptrace_scope=0
3.2 附加到目标进程
# 替换 <PID> 为 Python 脚本打印的 PID
gdb attach <PID>

4. 设置断点并调试

4.1 在 GDB 中设置断点
# 对特定文件的某一行下断点(例如 xxx.cc 的第 123 行)
(gdb) b xxx.cc:123# 或对函数名下断点
(gdb) b MyClass::MyFunction
4.2 继续执行程序
(gdb) c
4.3 触发断点

回到 Python 脚本所在终端,按 Enter 继续执行,程序会在断点处暂停。


5. 常用 GDB 调试命令

命令作用
bt查看调用栈(backtrace)
p variable打印变量值
n单步执行(不进入函数)
s单步执行(进入函数)
info threads查看所有线程
thread <ID>切换到指定线程
q退出 GDB

注意事项

  1. 代码一致性:确保 GDB 调试的二进制文件与 Python 调用的完全一致(重新编译后需重启 Python 脚本)。
  2. 动态库断点:若断点位于动态库中,需确保库的 Debug 符号已加载(编译时带 -g)。
  3. 多线程调试:使用 info threadsthread <ID> 管理多线程问题。
  4. GDB 增强工具:可安装 gdb-peda 或 pwndbg 提升调试效率。

  通过以上步骤,你可以高效地调试python端调用C++ 代码部分。如需更复杂的操作(如条件断点、观察点),可进一步查阅 GDB 官方文档。

相关文章:

TVM中Python如何和C++联调?

1. 编译 Debug 版本 # 在项目根目录下创建构建目录&#xff08;若尚未创建&#xff09; mkdir -p build && cd build# 配置 Debug 构建 cmake -DCMAKE_BUILD_TYPEDebug ..# 编译&#xff08;根据 CPU 核心数调整 -j 参数&#xff09; make -j$(nproc)2. 获取 Python 进…...

从零实现基于Transformer的英译汉任务

1. model.py&#xff08;用的是上一篇文章的代码&#xff1a;从0搭建Transformer-CSDN博客&#xff09; import torch import torch.nn as nn import mathclass PositionalEncoding(nn.Module):def __init__ (self, d_model, dropout, max_len5000):super(PositionalEncoding,…...

在 PyTorch 中借助 GloVe 词嵌入完成情感分析

一. Glove 词嵌入原理 GloVe是一种学习词嵌入的方法&#xff0c;它希望拟合给定上下文单词i时单词j出现的次数。使用的误差函数为&#xff1a; 其中N是词汇表大小&#xff0c;是线性层参数&#xff0c; 是词嵌入。f(x)是权重项&#xff0c;用于平衡不同频率的单词对误差的影响…...

大数据应用开发和项目实战-电商双11美妆数据分析

数据初步了解 &#xff08;head出现&#xff0c;意味着只出现前5行&#xff0c;如果只出现后面几行就是tail&#xff09; info shape describe 数据清洗 重复值处理 这个重复值是否去掉要看实际情况&#xff0c;比如说&#xff1a;昨天卖了5瓶七喜&#xff0c;今天卖了5瓶七…...

web服务

一、nginx的安装与启用 nginx的安装 开源版本的Nginx官网&#xff1a;http://nginx.org Nginx在安装的过程中可以选择源码安装也可以选择使用软件包安装 源码安装下载相应的源码压缩包解压后编译完成安装 软件安装包可以使用rpm或者apt命令进行安装&#xff0c;也可以使用dnf…...

在Spring Boot 中如何配置MongoDB的副本集 (Replica Set) 或分片集群 (Sharded Cluster)?

在 Spring Boot 中配置 MongoDB 副本集 (Replica Set) 或分片集群 (Sharded Cluster) 非常相似&#xff0c;主要区别在于连接字符串 (URI) 中提供的主机列表和一些特定选项。 最常的方式是使用 spring.data.mongodb.uri 属性配置连接字符串。 1. 连接到 MongoDB 副本集 (Repl…...

Oracle中游标和集合的定义查询及取值

在 Oracle 存储过程中&#xff0c;使用游标处理自定义数据行类型时&#xff0c;可以通过 定义记录类型&#xff08;RECORD&#xff09; 和 游标&#xff08;CURSOR&#xff09; 结合实现。 1. 定义自定义记录类型 使用 TYPE … IS RECORD 定义自定义行数据类型&#xff1a; DE…...

Python企业级MySQL数据库开发实战指南

简介 Python与MySQL的完美结合是现代Web应用和数据分析系统的基石,能够创建高效稳定的企业级数据库解决方案。本文将从零开始,全面介绍如何使用Python连接MySQL数据库,设计健壮的表结构,实现CRUD操作,并掌握连接池管理、事务处理、批量操作和防止SQL注入等企业级开发核心…...

【LLM】Open WebUI 使用指南:详细图文教程

Open WebUI 是一个开源的、可扩展且用户友好的自托管 AI 平台,专为生成式人工智能模型交互而设计。 Open WebUI 旨在为用户提供一个简单易用、功能强大且高度定制化的界面,使其能够轻松与各种 AI 模型(如文本生成、图像生成、语音识别等)进行交互。 一、安装与初始化配置 扩…...

前端封装框架依赖管理全攻略:构建轻量可维护的私有框架

前端封装框架依赖管理全攻略&#xff1a;构建轻量可维护的私有框架 前言 在自研前端框架的开发中&#xff0c;依赖管理是决定框架可用性的关键因素。不合理的依赖设计会导致&#xff1a; 项目体积膨胀&#xff1a;重复依赖使最终打包体积增加30%版本地狱&#xff1a;不同项目…...

Listremove数据时报错:Caused by: java.lang.UnsupportedOperationException

看了二哥的foreach陷阱后&#xff0c;自己也遇见了需要循环删除元素的情况&#xff0c;立马想到了当时自己阴差阳错的避开所有坑的解决方式&#xff1a;先倒序遍历&#xff0c;再删除。之前好使&#xff0c;但是这次不好使了&#xff0c;报错Caused by: java.lang.UnsupportedO…...

互联网大厂Java求职面试:云原生与AI融合下的系统设计挑战-1

互联网大厂Java求职面试&#xff1a;云原生与AI融合下的系统设计挑战-1 在当今云计算和人工智能迅猛发展的背景下&#xff0c;互联网大厂对Java工程师的要求已从传统的单体架构和业务逻辑处理&#xff0c;转向了更复杂的云原生架构设计、AI模型集成以及高并发系统的性能优化能…...

并发设计模式实战系列(16):屏障(Barrier)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第十六章屏障&#xff08;Barrier&#xff09;&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 屏障的同步机制 2. 关键参数 二…...

pywinauto通过图片定位怎么更加精准的识别图片?

pywinauto通过图片定位怎么更加精准的识别图片&#xff1f; 可以使用置信度的配置&#xff0c;添加了对比图片相似程度达到多少就可以认为是合适的定位图片 import time from time import sleep from pywinauto.application import Application from pywinauto.keyboard impo…...

Spring Cloud Stream集成RocketMQ(kafka/rabbitMQ通用)

什么是Spring Cloud Stream Spring Cloud Stream 是 Spring 生态系统中的一个框架&#xff0c;用于简化构建消息驱动微服务的开发和集成。它通过抽象化的方式将消息中间件&#xff08;如 RabbitMQ、Kafka、RocketMQ 等&#xff09;的复杂通信逻辑封装成简单的编程模型&#xf…...

基于docker使用showdoc搭建API开发文档服务器

以下是基于 Docker 快速搭建 ShowDoc API 文档服务器的完整指南&#xff0c;包含优化配置和常见问题解决方案&#xff1a; 1. 快速部署方案 # 创建数据目录&#xff08;确保权限&#xff09; mkdir -p /showdoc_data/html && chmod 777 -R /showdoc_data# 一键启动容器…...

Vision-Language Models (VLMs) 视觉语言模型的技术背景、应用场景和商业前景(Grok3 DeepSearch模式回答)

prompt: 你是一位文笔精湛、十分专业的技术博客作者&#xff0c;你将从技术背景、应用场景和商业前景等多个维度去向读者介绍Vision-Language Models 关键要点 研究表明&#xff0c;视觉语言模型&#xff08;VLMs&#xff09;是多模态AI系统&#xff0c;能同时处理视觉和文本数…...

OpenAI大变革!继续与微软等,以非营利模式冲击AGI

今天凌晨2点&#xff0c;OpenAI宣布&#xff0c;将继续由非营利组织控制&#xff1b;现有的营利性实体将转变为一家公共利益公司&#xff1b;非营利组织将控制该公共利益公司&#xff0c;并成为其重要的持股方。 这也就是说OpenAI曾在去年提到的由非营利性转变成营利性公司&am…...

Ubuntu打开中文文本乱码

文章目录 中文乱码问题修复乱码系统字符编码修改文本编码修改vim乱码 utf-8编码原理特点应用场景与其他编码的转换 iso-8859-1基本信息字符涵盖应用场景与其他编码的关系 ubuntu打开文本出现乱码&#xff0c;可能是编码没设置对。 中文乱码问题 使用vim打开文本&#xff0c;或…...

车载通信网络安全:挑战与解决方案

1. 简介 当今时代见证了车载汽车技术的巨大发展&#xff0c;因为现代智能汽车可以被视为具有出色外部基础设施连接能力的信息物理系统 [ 1 ]。车载技术支持的现代智能汽车不应被视为类似于机械系统&#xff0c;而是由数百万行复杂代码组成的集成架构&#xff0c;可为车内乘客提…...

【Linux系统】读写锁

读者写者问题 重点 读者写者问题是并发编程中的经典问题&#xff0c;主要研究多个进程或线程对共享数据进行读和写操作时如何实现同步和互斥&#xff0c;以保证数据的一致性和操作的正确性 。 问题核心要点 同步与互斥&#xff1a;需要确保多个读者可以同时读共享数据&#…...

springBoot中自定义一个validation注解,实现指定枚举值校验

缘由 在后台写接口的时候&#xff0c;经常会出现dto某个属性是映射到一个枚举的情况。有时候还会出现只能映射到枚举类中部分枚举值的情况。以前都是在service里面自行判断&#xff0c;很多地方代码冗余&#xff0c;所以就想着弄一个自定义的validation注解来实现。 例如下面某…...

【Python】--装饰器

装饰器&#xff08;Decorator&#xff09;本质上是一个返回函数的函数 主要作用是&#xff1a;在不修改原函数代码的前提下&#xff0c;给函数增加额外的功能 比如&#xff1a;增加业务&#xff0c;日志记录、权限验证、执行时间统计、缓存等场景 my_decorator def func():pas…...

排序算法——堆排序

一、介绍 「堆排序heapsort」是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序。 1. 输入数组并建立小顶堆&#xff0c;此时最小元素位于堆顶。 2. 不断执行出堆操作&#xff0c;依次记录出堆元素&#xff0c;即可得…...

Day111 | 灵神 | 二叉树 | 验证二叉搜索树

Day111 | 灵神 | 二叉树 | 验证二叉搜索树 98.验证二叉搜索树 98. 验证二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;前序遍历 递归函数传入合法的左右边界&#xff0c;只有当前结点是合法的边界&#xff0c;才是二叉搜索树&#xff0c;否则就返回…...

软考-软件设计师中级备考 13、刷题 数据结构

倒计时17天时间不多了&#xff0c;数据库、UML、等知识点有基础直接略过&#xff0c;法律全靠考前的一两天刷题&#xff0c;英语直接放弃。 一、数据结构&#xff1a;链表、栈、队列、数组、哈希表、树、图 1、关于链表操作&#xff0c;说法正确的是&#xff1a; A)新增一个头…...

【5G通信】天线调整

在天线工程中&#xff0c;机械下倾角、电子下倾角和数字下倾角是调整天线波束指向的不同技术手段&#xff0c;其核心区别在于实现方式和灵活性&#xff1a; 1. 机械下倾角&#xff08;Mechanical Downtilt&#xff09; 定义&#xff1a;通过物理调整天线的安装角度&#xff0c…...

Kafka的Log Compaction原理是什么?

Kafka的Log Compaction&#xff08;日志压缩&#xff09;是一种独特的数据保留策略&#xff0c;其核心原理是保留每个key的最新有效记录。以下是关键原理分点说明&#xff1a; 1. 键值保留机制 通过扫描所有消息的key&#xff0c;仅保留每个key对应的最新value值。例如&#…...

嵌入式面试八股文(十四)·内存管理机制、优先级继承机制以及优先级翻转

目录 1. 内存管理算法&#xff08;五种内存管理机制&#xff09; 1.1 heap_1.c 1.2 heap_2.c 1.3 heap_3.c 1.4 heap_4.c 1.5 heap_5.c 1.6 总结 2. STM32通知寄存器有哪些&#xff1f; 2.1 核心寄存器组&#xff08;Cortex-M&#xff09; 2.2 特殊功能寄存…...

深度剖析:可视化如何重塑驾驶舱信息交互模式

为什么你开车时总觉得“信息太多却抓不住重点”&#xff1f; 今天的汽车早已不是单纯的交通工具&#xff0c;而是一个高度集成的信息终端。从导航、油耗、胎压到自动驾驶提示&#xff0c;各种数据不断涌进驾驶舱。 但问题也随之而来&#xff1a; 关键信息被淹没在一堆图标里…...

app根据蓝牙名字不同,匹配不同的产品型号,显示对应的UI界面

在开发一个 App 时&#xff0c;如果希望根据蓝牙设备名称&#xff08;Bluetooth Name&#xff09;的不同&#xff0c;自动匹配不同的产品型号&#xff0c;并显示对应的 UI 界面&#xff0c;可以按照以下思路来实现&#xff1a; ✅ 功能目标 扫描并连接蓝牙设备&#xff1b;获取…...

数据结构 --- 栈

1.栈的初始化 2.入栈 3.出栈 4.取出栈顶元素 5.获取栈中有效元素个数 6.栈的销毁 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的⼀端进⾏插⼊和删除元素操作。进⾏数据插⼊和删除操作 的⼀端称为栈顶&#xff0c;另⼀端称为栈底。栈中的数据元素遵守后进先…...

37-算法打卡-栈与队列-滑动窗口最大值-leetcode(239)-第三十七天

1 题目地址 239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09;239. 滑动窗口最大值 - 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑…...

【原创分享】魔音变声器内含超多语音包实时变声

魔音变声器,一款专业的调音变声器软件 亲测可使用所有功能[真棒] 去除所有广告 ————————————【下 载 地 址】———————————— 【​获取方法1】&#xff1a;https://pan.xunlei.com/s/VOP_TXtKNlevTgYvIlxmmJquA1?pwd8vpi# ————————————【下 …...

数据结构(一)——线性表的顺序表示和实现

一、线性表的定义 由n(n>0)个数据特性相同的元素构成的有限序列称为线性表&#xff0c;(n0)的时候被称为空表。 一个数据元素可以是简单的一个数据&#xff0c;一个符号&#xff0c;也可以是复杂的若干个数据项的组合。 二、线性表的类型定义 s线性表是由n(n≥0)个相同类…...

Winform(12.控件讲解)

ChildForm窗口: ChildForm代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespac…...

Python 10天冲刺 《元编程(Meta-programming)》

Python 的元编程&#xff08;Meta-programming&#xff09;是指在程序运行期间动态生成、修改或操作代码的技术。它允许开发者通过代码控制代码的行为&#xff0c;从而实现灵活、可扩展和抽象化的编程模式。Python 提供了多种元编程工具&#xff0c;包括装饰器、元类、动态导入…...

Android开发-创建、运行、调试App工程

在移动应用开发的世界里&#xff0c;Android平台凭借其开放性和广泛的设备支持&#xff0c;成为了许多开发者的选择。而要成为一名合格的Android开发者&#xff0c;掌握如何创建、运行以及调试应用程序是必不可少的基础技能。本文将详细介绍如何使用Android Studio完成这些任务…...

系统级编程(二):通过读取PE文件获取EXE或者DLL的依赖

PE文件 Windows的PE文件(Portable Executable)是一种专为Windows操作系统设计的标准可执行文件格式,用于存储和管理可执行程序、动态链接库(DLL)、驱动程序等二进制文件。PE文件格式自Windows NT 3.1引入以来,已成为Windows平台上所有可执行文件的标准格式,并广泛应用于…...

Linux主机时间设置操作指南及时间异常影响

一、Linux主机时间设置命令操作指南 1. 查看当前系统时间与时区 查看当前时间与时区&#xff1a;timedatectl # 显示详细时间与时区信息&#xff08;systemd系统适用&#xff09; date # 查看当前系统时间 hwclock --show # 查看硬件时…...

GPS定位方案

目录 一、常用的GPS定位方案包括&#xff1a; 二、主流品牌及热销型号 三、常用GPS算法及核心逻辑&#xff1a; 一、基础定位算法 二、高精度算法 三、辅助优化算法 四、信号处理底层算法 四、基本原理&#xff08;想自己写算法的琢磨一下原理&#xff09; 一、常用的GP…...

应对联网汽车带来的网络安全挑战

数字化加速正在彻底改变全球各行各业,而汽车行业更是走在了前列。目前,全球自动驾驶汽车保有量约为4860万辆,预计到2024年将增长至5420万辆。 智能汽车的崛起无疑令人兴奋,但也带来了一系列问题。为了保护客户免受新的威胁,汽车行业必须做出一系列考量:针对自动驾驶、网…...

人工智能与生命科学的深度融合:破解生物医学难题,引领未来科技革命

引言 随着人工智能技术的飞速发展&#xff0c;生命科学领域迎来了前所未有的变革。从药物研发到疾病预测&#xff0c;从个性化医疗到基因组学&#xff0c;AI的深度融入不仅加速了生物医学的进步&#xff0c;还在多个领域打破了传统科学研究的局限&#xff0c;开创了新的医学前沿…...

DeepSeek智能时空数据分析(七):4326和3857两种坐标系有什么区别?各自用途是什么?

序言&#xff1a;时空数据分析很有用&#xff0c;但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要&#xff0c;然而&#xff0c;三大挑战仍制约其发展&#xff1a;技术门槛高&#xff0c;需融合GIS理论、SQL开发与时空数据库等多领域知识&#xff1b;空…...

Qt/C++面试【速通笔记七】—Qt中为什么new QWidget不需要手动调用delete?

在Qt的开发中&#xff0c;管理内存是一个非常重要的话题&#xff0c;特别是在使用QWidget这类窗口组件时&#xff0c;很多开发者会遇到一个问题&#xff1a;“为什么我使用new QWidget创建的窗口对象不需要手动调用delete进行销毁&#xff1f;”。 1. 父子关系机制&#xff1a;…...

Super-vlan

Super VLAN&#xff08;VLAN聚合&#xff09;的理论与配置 1. 基本概念 Super VLAN&#xff08;超级VLAN&#xff09;是一种VLAN聚合技术&#xff0c;主要用于解决传统VLAN划分中IP地址浪费的问题。其核心思想是将多个Sub VLAN&#xff08;子VLAN&#xff09;聚合到一个Super …...

C——函数

一、函数的概念 数学中我们其实就⻅过函数的概念&#xff0c;⽐如&#xff1a;⼀次函数 y kx b &#xff0c;k和b都是常数&#xff0c;给⼀个任意的 x&#xff0c;就得到⼀个y值。 其实在C语⾔也引⼊函数&#xff08;function&#xff09;的概念&#xff0c;有些翻译为&…...

5.6刷题并查集

P1551 亲戚 #include<bits/stdc.h> using namespace std; const int N 5010; int f[N]; int find(int x){if(f[x] x)return x;return f[x] find(f[x]); } void solve(){int n, m, p; cin >> n >> m >> p;for(int i 1; i < n; i)f[i] i;for(in…...

pcl平面投影

// 创建一个系数为XY0,Z1的平面pcl::ModelCoefficients::Ptr coefficients (new pcl::ModelCoefficients ());coefficients->values.resize (4);coefficients->values[0] coefficients->values[1] 0;coefficients->values[2] 1.0;coefficients->values[3] 0…...

Linux远程管理

如何查看ip 如何使用vim编辑器 如何设置网络信息 远程访问 一&#xff1a;网络管理 &#xff08;1&#xff09;获取计算机的网络信息 基本语法&#xff1a; windows ipconfig ifconfig enS33: f1agS4163<UP,BR0ADCAST,RUNNING,MULTICAST> mtu 1500 inet…...