clang+llvm多進程gdb調試

clang+llvm多進程gdb調試

  • 前言
  • 1. 命令行gdb
  • 2. 父進程調試
  • 3. 子進程調試
  • 4. 返回父進程

前言

在學習新增llvm的優化pass時,需要跟蹤clang及llvm的調用棧。然而llvm通過posix_spawn()創建了新進程,這使得gdb調試必須有一定的技巧了。

1. 命令行gdb

以下命令通過clang調用新增優化pass(指令替換),將simple.c文件中的sum函數替換掉:

clang -flegacy-pass-manager -mllvm -sub -mllvm -sub_loop=1 -mllvm -sub_name=sum mvc.o simple.c -o simple

單步調試的命令為:

gdb --args clang -flegacy-pass-manager -mllvm -sub -mllvm -sub_loop=1 -mllvm -sub_name=sum mvc.o simple.c -o simple

實際上,在我的ubuntu下clang指向clang-13
在這里插入圖片描述

2. 父進程調試

從調用棧可知,clang::driver::Command::Execute()調用了llvm::sys::ExecuteAndWait(),從而聯系了clang模塊和llvm模塊。我們新增的優化pass正是llvm模塊的代碼。
在這里插入圖片描述
如何才能在posix_spawn()函數創建子進程后,觀察子進程的執行情況呢?

3. 子進程調試

follow-fork-mode的解釋是:

ebugger response to a program call of fork or vfork

detach-on-fork的解釋是:

Whether gdb will detach the child of a fork

根據下列博文https://blog.51cto.com/u_12740336/6252279,具體組合用途如下:
在這里插入圖片描述
在本案例的使用中,需要設置成child+off模式:

(gdb) set follow-fork-mode child
(gdb) set detach-on-fork off

在這里插入圖片描述

4. 返回父進程

利用inferior命令,可以切換進程:

(gdb) info inferiors
(gdb) inferior 1

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160827.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160827.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160827.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

函數式編程-Stream流筆記-三更草堂

函數式編程-Stream流 1. 概述 1.1 為什么學&#xff1f; 能夠看懂公司里的代碼 大數量下處理集合效率高 代碼可讀性高 消滅嵌套地獄 //查詢未成年作家的評分在70以上的書籍 由于數據中作家和書籍可能出現重復&#xff0c;需要進行去重 List<Book> bookList new Ar…

4G5G智能執法記錄儀在保險公司車輛保險遠程定損中的應用

4G智能執法記錄儀&#xff1a;汽車保險定損的**利器 隨著科技的不斷進步&#xff0c;越來越多的智能設備應用到日常生活中。而在車輛保險定損領域&#xff0c;4G智能執法記錄儀的出現無疑是一大**。它不僅可以實現遠程定損&#xff0c;還能實現可視化操作、打印保單以及數據融…

WCF Demo

1.WCF概述 WCF是用于構建分布式應用程序和服務的框架。它提供了用于創建和管理分布式系統的工具和庫&#xff0c;支持多種通信協議和傳輸方式&#xff0c;如HTTP、TCP、Named Pipes等。WCF基于服務的概念&#xff0c;允許開發人員定義服務契約、實現服務邏輯&#xff0c;并通過…

給定一個非嚴格遞增排列的有序數組,刪除數組中的重復項

實例要求&#xff1a;1、給定一個非嚴格遞增排列的有序數組 nums &#xff1b;2、原地 刪除重復出現的元素&#xff0c;使每個元素 只出現一次 &#xff1b;3、返回刪除后數組的新長度&#xff1b;4、元素的 相對順序 應該保持 一致 &#xff1b;5、然后返回 nums 中唯一元素的…

dolphinscheduler有任務一直在運行(問題)目前對數據庫解決

dolphinscheduler有任務一直在運行&#xff08;問題&#xff09;目前對數據庫解決 危害&#xff1a; 這么多的任務沒有結束&#xff0c;會涉及很多問題的&#xff0c;系統的數據盤會不斷入職日志&#xff0c;數據量很大&#xff0c; 其實對于dolphinscheduler的性能是下降的&a…

WMware虛擬機與主機互相共享文件安裝VMware Tools灰色無法點擊安裝解決方案

一、背景 虛擬機與主機互傳文件最簡單的方法&#xff0c;就是給虛擬機系統安裝VMware Tools。 安裝VMware Tools后虛擬機系統和主機的文件可以相互拖拽&#xff0c;文字也可以任意粘貼復制。 二、遇到的問題 使用VMware時&#xff0c;安裝VMware Tools或者重新安裝VMware To…

假期對企業郵箱的維護和管理策略

假期應該對企業郵箱做些什么&#xff1f;放假后對企業郵箱的自動回復設置將在這里單獨列出。自動回復是你與新老客戶溝通的橋梁。告訴老客戶你放假了&#xff0c;但你會花時間回復他。還告訴新客戶&#xff08;新詢價客戶&#xff09;你在假期不能及時回復他&#xff0c;他們會…

m4s格式視頻文件如何轉mp4?三個方法教會你!

m4s格式是一種視頻分片格式&#xff0c;它將視頻文件分成多個小塊&#xff0c;方便網絡傳輸和播放。這種格式常用于流媒體服務&#xff0c;如在線視頻網站、直播平臺等&#xff0c;比如B站嗶哩嗶哩下載下來的視頻就是這種格式。 方法一&#xff1a;野蔥視頻轉換器 一款音視頻轉…

鋸木棍

題目描述 有一根粗細均勻長度為 L 的木棍&#xff0c;先用紅顏色刻度線將它 m 等分&#xff0c;再用藍色刻度線將 其 n 等分&#xff08; m>n &#xff09;&#xff0c;然后按所有刻度線將該木棍鋸成小段&#xff0c;計算并輸出長度最長的木棍的長度和根數。 輸入格式…

【Python】數據類型和切片的零碎知識點

1. 數據類型 pow(a, b, c) # a^b % c print("happy {}".format(name))數字類型包括整數&#xff0c;浮點數&#xff0c;復數 0x9a表示十六進制數&#xff08;0x&#xff0c;0X開頭表示十六進制&#xff09; 0b1010&#xff0c;-0B101表示二進制數&#xff08;0…

python基礎-numpy

numpy中shape (1,X) 和 &#xff08;X&#xff0c;&#xff09;的區別 參考 首先放結論&#xff1a;shape(x,)是一維數組&#xff0c;ndim1,[1,2,3,…x] ;shape(1,x)是二維&#xff1f;數組&#xff0c;ndim2,[[1,2,3,…n]] 由于array.shape 表示數組的維度&#xff0c;返回一…

【Linux】權限的理解和使用

&#x1f466;個人主頁&#xff1a;Weraphael ?&#x1f3fb;作者簡介&#xff1a;目前正在學習c和算法 ??專欄&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起進步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指點一二 如果文章對…

Dapper的入門

Dapper 是一個輕量級的對象關系映射 (ORM) 工具&#xff0c;用于在.NET應用程序中處理數據庫操作。ORM 是一種編程技術&#xff0c;它將關系數據庫和面向對象編程語言之間的數據轉換和交互進行了封裝和簡化。Dapper 提供了一種簡單、高效的方式來執行數據庫查詢、插入、更新和刪…

【MySQL--->事務】

文章目錄 [TOC](文章目錄) 一、基本概念二、事務的操作1.設置全局事務隔離級別2.設置事務提交方式3.事務操作 三、事務隔離性1.隔離性概念2 .隔離級別設置 四、MVCC多版本控制2. read view 一、基本概念 事務是由若干條具有邏輯相關性的SQL語句組成的,用來完成某種任務的**邏輯…

C語言--判斷年月日是否合理

一.題目描述 比如輸入2001&#xff0c;2&#xff0c;29&#xff0c;輸出&#xff1a; 不合理 。因為平年的二月只有28天 比如輸入2000&#xff0c;6&#xff0c;31&#xff0c;輸出&#xff1a;不合理。因為6月是小月&#xff0c;只有30天。 二.思路分析 本題主要注意兩個問…

輕量服務器是不是vps,和vps有什么區別

1.輕量型服務器的定義和特點 輕量型服務器是介于云服務器和共享型服務器之間的一種解決方案。它提供較為獨立的資源分配&#xff0c;但規模較小&#xff0c;適用于中小型網站和應用程序。輕量型服務器的硬件資源來源于大型的公有云集群的虛擬化技術。輕量型服務器的性能和帶寬…

強化學習--多維動作狀態空間的設計

目錄 一、離散動作二、連續動作1、例子12、知乎給出的示例2、github里面的代碼 免責聲明&#xff1a;以下代碼部分來自網絡&#xff0c;部分來自ChatGPT&#xff0c;部分來自個人的理解。如有其他觀點&#xff0c;歡迎討論&#xff01; 一、離散動作 注意&#xff1a;本文均以…

ERP、CRM、SRM、PLM、HRM、OA……都是啥意思

在天某微電子上班&#xff0c;經常會聽說一些系統或平臺名稱&#xff0c;例如ERP、CRM、SRM、PLM、HRM、OA、FOL等。 這些系統&#xff0c;都是干啥用的呢&#xff1f; █ ERP&#xff08;企業資源計劃&#xff09; 英文全稱&#xff1a;Enterprise Resource Planning 定義…

如何使用SD-WAN提升物流供應鏈網絡效率

案例背景 本次分享的物流供應鏈企業是一家國際性的大型企業&#xff0c;專注于提供全球范圍內的物流和供應鏈解決方案。案例用戶在不同國家和地區均設有多個分支機構和辦公地點&#xff0c;以支持客戶需求和業務運營。 在過去&#xff0c;該企業用戶使用傳統的MPLS網絡來連接各…

OceanBase:04-單機在線轉分布式部署

目錄 1.當前部署情況 2.單Zone多OBServer模式 3.多Zone多OBServer模式 3.1 集群規劃 3.2 安裝OBServer程序 3.3 新增Zone 3.4 啟動Zone 3.5 向Zone新增OBserver節點 3.6重復3.2~3.5新增其他Zone 4.擴充資源 OceanBase 數據庫為單機分布式一體化架構&#xff0c;支持單…