1. 程式人生 > >IDEA除錯多執行緒

IDEA除錯多執行緒

使用idea除錯多執行緒的時候發現多執行緒無法除錯,後來經過搜尋發現,idea的斷點有不同的模式,只有當Thread模式下才能除錯多執行緒,設定方式如下:

  1. 在斷點上右鍵
  2. 選擇Thread,然後點Done(建議選擇Thread後點擊make default把此模式設定為預設模式)
    這裡寫圖片描述

之後就可以在debug模式按自己的想法除錯多執行緒了
這裡寫圖片描述

補充:有時可能想在指定的情況下進入斷點,如當某個執行緒時進入斷點、當i=999時進入斷點,這樣可以在斷點上加條件,如下圖
這裡寫圖片描述
如上圖情況,只有在i == 999 時才會進入此斷點

相關推薦

IDEA除錯執行

使用idea除錯多執行緒的時候發現多執行緒無法除錯,後來經過搜尋發現,idea的斷點有不同的模式,只有當Thread模式下才能除錯多執行緒,設定方式如下: 在斷點上右鍵 選擇Thread,然後點Done(建議選擇Thread後點擊make default把此

在IntelliJ IDEA執行併發程式碼的除錯方法

通常來說,多執行緒的併發及條件斷點的debug是很難完成的,或許本篇文章會給你提供一個友好的除錯方法。讓你在多執行緒開發過程中的除錯更加的有的放矢。 我們將通過一個例子來學習。在這裡,我編寫了一個多執行緒程式來計算此數學問題:`100! + 100000!`。即:100的階乘 + 100000的階乘。 &

Windbg除錯----執行控制除錯

在除錯程式的時候,可能經常會有這樣的需求,讓一個執行緒在特定的時候才讓其開始執行或者暫停執行。比如複雜的多執行緒導致死鎖的問題,又或者多執行緒中的Race Condition 導致程式執行異常等。 很多時候,我們可以藉助編寫除錯程式碼來達到多執行緒的除錯,可是有些情況下除錯的執行粒度是指

gdb除錯執行出現的死鎖

   多執行緒的條件下,程式很容易出現死鎖,此時各個執行緒處於等待狀態,可以通過gdb除錯找到死鎖出現的地方。 例子: #include <stdio.h> #include <pthread.h> #include <uni

以單例模式為例,在Idea執行debug

我們以單例模式的懶漢式在idea中進行多執行緒debug 一是可以學習多執行緒debug,二是可以瞭解懶漢式的執行緒不安全的原因 首先我們建立一個單例懶漢式,然後建立兩個執行緒 程式碼如下:   然後 進行多執行緒debug,來干預懶漢式的執行順序

linux gdb 除錯執行 程序 顯示巨集

                一、gdb除錯多執行緒gdb)info thread 檢視當前程序的執行緒。 gdb)thread <ID> 切換除錯的執行緒為指定ID的執行緒。 gdb)break file.c:100 thread all  在file.c檔案第100行處為所有經過這裡的執行緒

gdb 除錯執行

如果目標程序已經core dump了,那麼 gdb -c core xxx   xxx是對應的程式檔案。 如果目標程序還在執行,通常此時用於除錯執行緒死鎖的情況。有兩種方法 一是 gdb -p xxx  xxx是該程序的程序ID 或者用gcore xxx先獲取對應

【Linux】GDB除錯執行程序以及Core檔案

GDB偵錯程式 基本概念 GDB是GNU開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像VC、BCB等IDE的除錯,但如果你是在UNIX平臺下做軟體,你會發現

Linux下gdb除錯執行

gdb除錯多執行緒,目前我知道的就以下幾條指令,當然編譯的時候需要加-g選項。 info threads 顯示所有執行緒,系統會給每個執行緒都分配一個編號,編號前帶“*”的,是當前正在除錯的執行緒

《軟體除錯的藝術》筆記--除錯執行程式

下面是於執行緒相關的GDB命令用法彙總: info threads:給出關於當前所有執行緒的資訊。 thread 3:改成執行緒3. break 88 thread 3 :當執行緒到達原始碼88時停止執行。 break 88 thread 3 if i == 2 當執行緒3

使用gdb除錯執行程序程式

GDB的基本介紹 GDB是GUN開源組織釋出的一個強大的UNIX下的程式除錯工具。或許,平時大家更加習慣圖形介面的除錯,比如VS上的IDE除錯;但是如果我們在UNIX或Linux下做軟體,我們呢就更加需要熟練GDB這個除錯工具。 一般來說,GDB主要能夠完成以下的幾個功能: ①啟動你的程式,可以按照你自己

Java Debug Interface(JDI)除錯執行應用程式

        專案中遇到500多個執行緒併發執行,並將執行緒執行所生成的資料插入MySql資料庫,按設想,500個執行緒,資料庫中應有序號連續的500條記錄。然而,鬱悶的是資料庫中的記錄在第450條左右就開始不連續,部分記錄缺失。500多個執行緒幾乎是獨立的,它們之間存在

linux下gdb除錯執行死迴圈

1、我們首先要知道是哪個執行緒出了問題:     A、查程序  ps -ef | grep 程序名         B、查執行緒  top -H -p 程序ID 2、gdb檢視  gdb 程序名  程序號 :     A、檢視是哪個執行緒出了問題 (gdb) inf

Linux gdb除錯執行

一、多執行緒除錯 多執行緒除錯可能是問得最多的。其實,重要就是下面幾個命令: info thread 檢視當前程序的執行緒。 thread <ID> 切換除錯的執行緒為指定ID的執行緒。 break file.c:100 thread all  在file.c檔案第100行處為所有經過這

IDEA執行除錯

1、儘量把執行緒個數設定1,方便除錯 2、設定斷點,debug除錯(此時只有main執行緒) 3、調式進入多執行緒,可以看到多出thread1 4、接著右鍵 5、接著雙擊需要斷點的地

idea 執行除錯

import java.util.ArrayList; /** * description: * * @author: dawn.he QQ: 905845006 * @email: [email protected] * @email: 905845006@q

Linux/Windows下C++設定執行名字方便執行除錯

C++多執行緒程式設計,除錯是一個大問題,原因之一就是,執行緒名字繼承了父程序的名字,因此導致同一段程式碼的不同執行緒名字一樣;而且還會導致執行緒的名字怪怪的,不好看。 因此,如果在程式碼中可以設定執行緒的名字就好了,這樣在除錯中就可以看到期望的執行緒名字,這樣便於除錯。 由於編

利用web work實現執行非同步機制,打造頁面單步除錯IDE

我們已經完成了整個編譯器的開發,現在我們做一個能夠單步除錯的頁面IDE,完成本章程式碼後,我們可以實現下面如圖所示功能: 頁面IDE可以顯示每行程式碼所在的行,單擊某一行,在改行前面會出現一個紅點表示斷點,點選Parsing按鈕後,進入單步除錯模式,然後每點一次step按鈕,頁

gdb 除錯程序、執行的小栗子

gdb除錯中多執行緒是一個難點,涉及到諸多執行緒的相互影響。對於多執行緒之間的相互影響,這個不在這個小栗子的闡述範圍內。這是除錯一個簡單的子程序中的子執行緒的小栗子。 使用材料 /*這是一個演示gdb除錯子程序、子執行緒的檔案 */ #include <stdio.h>

gdb的執行除錯

一些術語 all-stop mode 全停模式 single-stepping 單步執行 scheduler-locking 排程鎖 schedule-multiple 多程序排程 record mode 記錄模式 replay mode 回放模式 inferior GDB用 inferior 來表示每個程