CN117873740A - 基于gdb的进程死锁关系图构建方法、装置及存储介质 - Google Patents
基于gdb的进程死锁关系图构建方法、装置及存储介质 Download PDFInfo
- Publication number
- CN117873740A CN117873740A CN202410275174.2A CN202410275174A CN117873740A CN 117873740 A CN117873740 A CN 117873740A CN 202410275174 A CN202410275174 A CN 202410275174A CN 117873740 A CN117873740 A CN 117873740A
- Authority
- CN
- China
- Prior art keywords
- deadlock
- information
- gdb
- thread
- rendering process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 232
- 238000009877 rendering Methods 0.000 claims abstract description 73
- 238000001514 detection method Methods 0.000 claims abstract description 68
- 238000010586 diagram Methods 0.000 claims abstract description 23
- 238000004891 communication Methods 0.000 claims abstract description 14
- 238000004806 packaging method and process Methods 0.000 claims abstract description 13
- 238000010276 construction Methods 0.000 claims description 13
- 238000007639 printing Methods 0.000 claims description 6
- 230000000007 visual effect Effects 0.000 claims description 5
- 238000011161 development Methods 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract description 4
- 230000001419 dependent effect Effects 0.000 abstract description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于gdb的进程死锁关系图构建方法、装置及存储介质,所述方法包括:将gdb API接口封装进图形化用户页面模板中主进程;通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息;主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。极大地提高锁检测的通用性和便捷性,克服了已有gdb死锁检测方法的高度依赖底层库信息的缺点。
Description
技术领域
本发明涉及进程管理技术领域,尤其涉及一种基于gdb的进程死锁关系图构建方法、装置及存储介质。
背景技术
基于Linux系统的国产操作系统和基于arm指令集、loongarch指令集的国产CPU在近些年得到了飞速的发展。在Linux多线程或多进程的操作系统环境中,死锁是一种常见的问题,它可能导致系统资源的浪费、程序的停滞以及系统崩溃等严重后果。因此,对于Linux系统中的死锁进行有效的检测非常关键,需要在将软件应用于生产环境前进行高效快捷的死锁检测,及时将问题暴露于实际生产环境之前。传统的死锁检测方法借助Linux系统strace命令或其它工具比如valgrind进行检测,会输出大量的调试日志,需要用户进行过滤筛选进行人工分析,相对复杂低效。
发明内容
本发明实施例提供了一种基于gdb的进程死锁关系图构建方法、装置及存储介质,以解决现有技术中对于死锁检测信息获取和显示复杂低效的技术问题。
第一方面,本发明实施例提供了一种基于gdb的进程死锁关系图构建方法,包括:
将gdb API接口封装进图形化用户页面模板中主进程;
通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;
主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;
主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
第二方面,本发明实施例还提供了一种基于gdb的进程死锁关系图构建装置,包括:
封装模块,用于将gdb API接口封装进图形化用户页面模板中主进程;
通信模块,用于通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;
获取模块,用于利用主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;
绘制模块,用于利用主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
第三方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的基于gdb的进程死锁关系图构建方法。
本发明实施例提供的基于gdb的进程死锁关系图构建方法、装置及存储介质,通过将gdb API接口封装进图形化用户页面模板中主进程;通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。可以通过图形化的方式一键完成检测及结果展示,极大地提高锁检测的通用性和便捷性,克服了已有gdb死锁检测方法的高度依赖底层库信息的缺点。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明实施例一提供的基于gdb的进程死锁关系图构建方法的流程示意图;
图2是本发明实施例二提供的基于gdb的进程死锁关系图构建方法的流程示意图;
图3是本发明实施例三提供的基于gdb的进程死锁关系图构建装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的基于gdb的进程死锁关系图构建方法的流程图,本实施例可适用于基于gdb绘制死锁关系图的情况,该方法可以由基于gdb的进程死锁关系图构建装置来执行,具体包括如下步骤:
步骤110, 将gdb API接口封装进图形化用户页面模板中主进程。
gdb是一种UNIX及Linux下的调试工具,能够检查程序中的各种参数和运行中的各种信息。通过gdb API接口可以获取到上述各种参数和运行中的各种信息。在本实施例中,为便于展示进程死锁关系,可以采用图方式进行直观展示,方便用户通过图形化方式,直观、便捷的发现死锁、并定位死锁。可以避免开发者因不熟悉调试命令而导致调试难度的增加。
在本实施例中,为便于自动绘制死锁图,可以利用图形化用户页面模板实现自动绘制。示例性的,可以利用Vue框架和electron应用开发框架构建图形化页面。Vue是一款用于构建用户界面的JavaScript框架,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。Electron是使用JavaScript,HTML和CSS构建跨平台的桌面应用程序框架。利用二者可实现编程式绘制,通过相应的代码可在图形化页面中设置死锁信息绘制展示区域。
进一步的,利用APP.vue对图形可视化页面进行排版布局,设置检测操作控件,所述检测操作控件包括死锁类型选择下拉框、待检测进程的进程号输入框和检测按钮。
图形化页面APP.vue中存有主进程main.ts,将gdb API接口封装进图形化用户页面模板中主进程,利用gdb API接口可根据需求发送各种信息查询指令,并从该接口获取各种对应信息。用户可通过上述设置的各种检测操作控件进行操作。
步骤120,通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成。
在本实施例中,由于死锁信息多种多样,显示的内容也有所不同。可选的,可以支持用户在图形化用户页面的各种操作。利用与渲染进程APP.vue之间进行通信,可以接收用户在渲染进程页面的操作。
步骤130,主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息。
示例性的,可以向所述gdb API接口发送各种查询指令,获取到对应的死锁信息,以及和死锁信息对应的文件代码行的定位信息。
步骤140,主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
判断各个线程的锁信息是否构成一个封闭的环路满足Coffman条件死锁。并获取相应的文件代码行的定位信息,并利用渲染进程在死锁信息绘制展示区域中绘制进程死锁关系图。主进程完成死锁检测及检测信息处理后,再将数据发送给渲染进程,渲染进程调用绘图接口完成死锁关系图的可视化展示。
本实施例通过将gdb API接口封装进图形化用户页面模板中主进程;通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;主进程利用所述gdbAPI接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。可以通过图形化的方式一键完成检测及结果展示,极大地提高锁检测的通用性和便捷性,克服了已有gdb死锁检测方法的高度依赖底层库信息的缺点。
在本实施例的一个优选实施方式中,所述方法还可增加如下步骤:利用package.json文件完成编译选项将所述进程死锁关系图进行编译;通过electron-build进行编译构建,按照预设包格式进行打包,形成打包文件;安装所述打包文件的桌面快捷方式图标。可以通过package.josn文件完成编译选项,打包文件、构建包格式(rpm、deb)、安装包桌面快捷方式图标等配置,并通过electron-build进行编译构建成deb或rpm安装包。在构建成deb或rpm安装包,安装后,启动图形界面,输入进程号,点击开始检测,完成一键检测及结果展示。利用上述方式,可以便于用户直接利用打包文件直接操作并查看对应图形化的死锁信息检测结果。方便用户通过图形化操作的方式,直观、便捷的发现死锁、并定位死锁。可以避免开发者因不熟悉调试命令而导致调试难度的增加。可以极大的缩短开发者在将软件应用于实际生产环境之前进行性能分析时发现死锁并解决死锁流程,在一定程度上极大地缩短了软件开发周期。
实施例二
图2是本发明实施例二提供的基于gdb的进程死锁关系图构建方法的流程示意图,本实施例以上述实施例为基础进行优化,将所述利用所述gdb API接口获取死锁信息对应的文件代码行的定位信息,具体优化为:利用gdb进程附加命令追踪死锁进程,并获取所述进程的线程数组;利用所述线程数组中线程信息,遍历所有线程,并通过gdb回溯命令获取线程的堆栈信息;利用堆栈信息查询线程是否存在读写锁符号,确定读写锁所在的线程;将gdb切换到所述读写锁所在的线程,读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主,通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。
参见图2,所述基于gdb的进程死锁关系图构建方法,包括:
步骤210,将gdb API接口封装进图形化用户页面模板中主进程。
步骤220,通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成。
步骤230,利用gdb进程附加命令追踪死锁进程,并获取所述进程的线程数组。
示例性的,可以在银河麒麟操作系统V10版本上安装调试工具gdb,启动一个读写锁死锁进程,并获取到进程号。通过gdb attach进程号追踪该进程并获取到进程的所有线程的数组。
步骤240, 利用所述线程数组中线程信息,遍历所有线程,并通过gdb回溯命令获取线程的堆栈信息。
遍历各个线程,分别通过thread n切换到指定线程,并通过bt命令获取到该线程的堆栈信息。
步骤250, 利用堆栈信息查询线程是否存在读写锁符号,确定读写锁所在的线程。
查询堆栈信息是否有读写锁符号,例如:pthread_rwlock_readlock或pthread_rwlock_readlock。根据读写锁信号,确定对应的线程。
步骤260,将gdb切换到所述读写锁所在的线程,读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主。
当通过 gdb切换到指定线程时,通过命令p/x a6打印读写锁寄存器a6的值value,并通过命令p ((pthread_rwlock_t *)value->__data.__cur__writer获取线程锁的属主,存储各个线程的锁信息。
步骤270,通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。
通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。
步骤280,主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
本实施例通过将所述利用所述gdb API接口获取死锁信息对应的文件代码行的定位信息,具体优化为:利用gdb进程附加命令追踪死锁进程,并获取所述进程的线程数组;利用所述线程数组中线程信息,遍历所有线程,并通过gdb回溯命令获取线程的堆栈信息;利用堆栈信息查询线程是否存在读写锁符号,确定读写锁所在的线程;将gdb切换到所述读写锁所在的线程,读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主,通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。可以支持在多种国产CPU架构上进行检测,还支持在不依赖于glibc-debuginfo、libc6-dbg的情况下实现死锁检测,在安装上述依赖的情况下完成死锁文件及代码行的精准定位,同样有效避免了因底层库版本升级符号缺失导致的检测失败问题。
实施例三
图3是本发明实施例三提供的基于gdb的进程死锁关系图构建装置的结构示意图,参见图3,所述基于gdb的进程死锁关系图构建装置,包括:
封装模块310,用于将gdb API接口封装进图形化用户页面模板中主进程;
通信模块320,用于通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;
获取模块330,用于利用主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;
绘制模块340,用于利用主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
本实施例提供的基于gdb的进程死锁关系图构建装置,通过将gdb API接口封装进图形化用户页面模板中主进程;通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。可以通过图形化的方式一键完成检测及结果展示,极大地提高锁检测的通用性和便捷性,克服了已有gdb死锁检测方法的高度依赖底层库信息的缺点。
在上述各实施例的基础上,所述装置还包括:
编译模块,用于利用package.json文件完成编译选项将所述进程死锁关系图进行编译;
打包模块,用于通过electron-build进行编译构建,按照预设包格式进行打包,形成打包文件;
安装模块,用于安装所述打包文件的桌面快捷方式图标。
在上述各实施例的基础上,所述装置还包括:
设置模块,用于利用Vue框架和electron应用开发框架构建图形化页面,并在图形化页面中设置死锁信息绘制展示区域;
相应的,所述绘制模块,包括:
绘制单元,用于利用所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口在死锁信息绘制展示区域绘制进程死锁关系图。
在上述各实施例的基础上,所述预设包格式包括:
Rpm或deb包格式。
在上述各实施例的基础上,所述绘制模块包括:
线程数组获取单元,用于利用gdb进程附加命令追踪死锁进程,并获取所述进程的线程数组;
堆栈信息获取单元,用于利用所述线程数组中线程信息,遍历所有线程,并通过gdb回溯命令获取线程的堆栈信息;
确定单元,用于利用堆栈信息查询线程是否存在读写锁符号,确定读写锁所在的线程;
属主获取单元,用于将gdb切换到所述读写锁所在的线程,读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主。
在上述各实施例的基础上,所述绘制模块还包括:
提取单元,用于通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。
在上述各实施例的基础上,所述确定单元用于:
查询堆栈信息是否存在读写锁符号pthread_rwlock_readlock或pthread_rwlock_readlock。
在上述各实施例的基础上,所述装置还包括:
布局模块,用于利用APP.vue对图形可视化页面进行排版布局,设置检测操作控件,所述检测操作控件包括死锁类型选择下拉框、待检测进程的进程号输入框和检测按钮。
本发明实施例所提供的基于gdb的进程死锁关系图构建装置可执行本发明任意实施例所提供的基于gdb的进程死锁关系图构建方法,具备执行方法相应的功能模块和有益效果。
实施例四
本发明实施例四还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的任一所述的基于gdb的进程死锁关系图构建方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或设备上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于gdb的进程死锁关系图构建方法,其特征在于,包括:
将gdb API接口封装进图形化用户页面模板中主进程;
通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;
主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;
主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用package.json文件完成编译选项将所述进程死锁关系图进行编译;
通过electron-build进行编译构建,按照预设包格式进行打包,形成打包文件;
安装所述打包文件的桌面快捷方式图标。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用Vue框架和electron应用开发框架构建图形化页面,并在图形化页面中设置死锁信息绘制展示区域;
相应的,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图,包括:
所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口在死锁信息绘制展示区域绘制进程死锁关系图。
4.根据权利要求2所述的方法,其特征在于,所述预设包格式包括:
Rpm或deb包格式。
5.根据权利要求1所述的方法,其特征在于,所述利用所述gdb API接口获取死锁信息,包括:
利用gdb进程附加命令追踪死锁进程,并获取所述进程的线程数组;
利用所述线程数组中线程信息,遍历所有线程,并通过gdb回溯命令获取线程的堆栈信息;
利用堆栈信息查询线程是否存在读写锁符号,确定读写锁所在的线程;
将gdb切换到所述读写锁所在的线程,读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主。
6.根据权利要求5所述的方法,其特征在于,所述获取对应的文件代码行的定位信息,包括:
通过gdb切换至各个线程并通过bt命令打印堆栈信息,提取文件及代码行信息。
7.根据权利要求6所述的方法,其特征在于,所述利用堆栈信息查询线程是否存在读写锁符号,包括:
查询堆栈信息是否存在读写锁符号pthread_rwlock_readlock或pthread_rwlock_readlock。
8.根据权利要求6所述的方法,其特征在于,所述读取读写锁寄存器的值,并通过线程锁值读取命令读取线程锁的属主,包括:
利用APP.vue对图形可视化页面进行排版布局,设置检测操作控件,所述检测操作控件包括死锁类型选择下拉框、待检测进程的进程号输入框和检测按钮。
9.一种基于gdb的进程死锁关系图构建装置,其特征在于,包括:
封装模块,用于将gdb API接口封装进图形化用户页面模板中主进程;
通信模块,用于通过进程间通信机制,主进程与渲染进程APP.vue之间进行通信,接收所述渲染进程中的操作信息,所述操作信息根据所述渲染进程接收用户在渲染进程页面的操作生成;
获取模块,用于利用主进程利用所述gdb API接口获取与所述操作信息对应的死锁信息和对应的文件代码行的定位信息;
绘制模块,用于利用主进程对所述死锁信息进行死锁检测,将死锁检测结果和文件代码行的定位信息发送至所述渲染进程,所述渲染进程根据所述死锁检测结果和文件代码行的定位信息调用绘图接口绘制进程死锁关系图。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-8任一所述的基于gdb的进程死锁关系图构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410275174.2A CN117873740B (zh) | 2024-03-12 | 基于gdb的进程死锁关系图构建方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410275174.2A CN117873740B (zh) | 2024-03-12 | 基于gdb的进程死锁关系图构建方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117873740A true CN117873740A (zh) | 2024-04-12 |
CN117873740B CN117873740B (zh) | 2024-06-07 |
Family
ID=
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201491026U (zh) * | 2009-07-31 | 2010-05-26 | 福建升腾资讯有限公司 | 基于万维网的调试系统 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
CN107391265A (zh) * | 2016-03-25 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 用于进程中检测死锁的方法和设备 |
CN109669858A (zh) * | 2018-11-22 | 2019-04-23 | 新华三技术有限公司合肥分公司 | 程序死锁的测试方法、装置和设备 |
CN113032080A (zh) * | 2021-03-31 | 2021-06-25 | 广州虎牙科技有限公司 | 页面实现方法、应用程序、电子设备及存储介质 |
CN113169894A (zh) * | 2018-11-20 | 2021-07-23 | 思科技术公司 | 基于事件的数据的直观可视化 |
CN113886096A (zh) * | 2021-09-02 | 2022-01-04 | 上海弘积信息科技有限公司 | 一种死锁的定位方法 |
CN115185519A (zh) * | 2022-07-08 | 2022-10-14 | 中国电子系统技术有限公司 | 一种基于前端可视化的辅助编码方法 |
CN116841862A (zh) * | 2023-04-20 | 2023-10-03 | 麒麟软件有限公司 | 死锁检测方法 |
CN117608869A (zh) * | 2023-12-19 | 2024-02-27 | 百度时代网络技术(北京)有限公司 | 面向低代码平台的事务死锁可视化方法、装置及设备 |
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201491026U (zh) * | 2009-07-31 | 2010-05-26 | 福建升腾资讯有限公司 | 基于万维网的调试系统 |
CN102789413A (zh) * | 2011-05-23 | 2012-11-21 | 同济大学 | 一种并行程序的调试系统及方法 |
CN107391265A (zh) * | 2016-03-25 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 用于进程中检测死锁的方法和设备 |
CN113169894A (zh) * | 2018-11-20 | 2021-07-23 | 思科技术公司 | 基于事件的数据的直观可视化 |
CN109669858A (zh) * | 2018-11-22 | 2019-04-23 | 新华三技术有限公司合肥分公司 | 程序死锁的测试方法、装置和设备 |
CN113032080A (zh) * | 2021-03-31 | 2021-06-25 | 广州虎牙科技有限公司 | 页面实现方法、应用程序、电子设备及存储介质 |
CN113886096A (zh) * | 2021-09-02 | 2022-01-04 | 上海弘积信息科技有限公司 | 一种死锁的定位方法 |
CN115185519A (zh) * | 2022-07-08 | 2022-10-14 | 中国电子系统技术有限公司 | 一种基于前端可视化的辅助编码方法 |
CN116841862A (zh) * | 2023-04-20 | 2023-10-03 | 麒麟软件有限公司 | 死锁检测方法 |
CN117608869A (zh) * | 2023-12-19 | 2024-02-27 | 百度时代网络技术(北京)有限公司 | 面向低代码平台的事务死锁可视化方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2368189B1 (en) | Debugging pipeline | |
US10162605B2 (en) | Code snippet content recommendation to define an object literal | |
US11755293B2 (en) | Code execution and data processing pipeline | |
US20160321055A1 (en) | Mapping between local and remote for seamless build and design time experience | |
WO2017020459A1 (zh) | 一种为宿主配置插件包的方法与装置 | |
CN110764941A (zh) | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 | |
US20130081010A1 (en) | Template and server content download using protocol handlers | |
CN109189388A (zh) | 页面配置方法、服务器及计算机可读介质 | |
CN114217789A (zh) | 功能组件拓展方法、装置、设备、存储介质及程序产品 | |
CN116627850B (zh) | 函数调试方法、装置、存储介质以及电子设备 | |
CN117873740B (zh) | 基于gdb的进程死锁关系图构建方法、装置及存储介质 | |
CN110888641B (zh) | 一种脚本自动生成方法、装置、服务器及存储介质 | |
TW201324347A (zh) | 功能模組命令管理系統及方法 | |
WO2021108362A1 (en) | Method and apparatus for data interaction | |
CN111258802A (zh) | 捕获应用程序崩溃信息的方法及相关设备 | |
CN117873740A (zh) | 基于gdb的进程死锁关系图构建方法、装置及存储介质 | |
CN111580804A (zh) | 一种软件项目开发的方法和装置 | |
CN114428575A (zh) | 一种界面元素探测识别方法、装置、存储介质及电子设备 | |
CN113761402A (zh) | 一种链接调试方法、装置、设备和存储介质 | |
CN113468050A (zh) | 基于画布的测试方法、装置、计算机设备及存储介质 | |
CN113515271A (zh) | 服务代码生成方法、装置、电子设备及可读存储介质 | |
CN111857752A (zh) | 一种PostgreSQL数据库安装方法、装置及设备 | |
US10656921B2 (en) | Sparse object instantiation | |
CN111562958A (zh) | 页面数据展示管理方法以及装置 | |
CN112003647A (zh) | 一种回收光猫的检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |