當前位置:首頁 » 操作系統 » linux程序調試

linux程序調試

發布時間: 2023-03-30 15:16:18

linux入門基礎(四)Gdb調試程序

Gdb調試
注意:在Gcc編譯選項中一定要加入
–g
退出GDB:quit

Ctrl+d
調試過程:
1.
查看文件
命令:
(gdb)
l
命令:(gdb)
b
行號
註:到第17行停止,並沒有執行17行
3.
查看斷點情況
info
b
4.
運行代碼
r
命令:
(gdb)
r
(也可以指定行開始運行,在r後面加上行號)
5.
查看變數值
p
命令:(gdb)
p
變數名
6.
設置監視點:
watch
z
(變數名)
也可以是復雜的表達式
7.
單步運行
命令:(gdb)
n
(逐過程)
8.逐步,會進入函數
命令:(gdb)
s
9.條件斷點
將正常斷點轉變為條件斷點:condition
如:condition
1
i
==
10
只有當滿足條件i
==
1時,才會在斷點1處暫停
10.
恢復程序運行
c
命令:
(gdb)
c
(程序就會運行,如果沒有斷點,就運行剩下部分,如果有斷點,就會運行到下一個斷點)
11.
去除斷點
clear
line_number
clear
filename:line_number
12.
help
12.1
help找出類別
12.2help從列表中

⑵ 使用GNU/gdb調試Linux C/C++可執行程序查看出錯源代碼、設置斷點

gdb是GNU開源組織發布的一個強大的Linux程序調試工具,比圖形化的調試工具更強大,主要來調試C/C++語言程序。

Debug 版本的可執行程序包含調試信息,用於程序員調試程序。

Release 版本的可執行程序往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以方便用戶使用。

用gcc/g++編譯時,要加上-g選項生成debug版本的可執行程序,否則就無法使用gdb調試了。

r 表示開始run, 如果在運行的過程中發生了錯誤,比如segmentation fault,可以查看此時的出錯源代碼:

通過b或者break設置斷點,斷點的設置可以通過函數名、行號、文件名+函數名、文件名+行號以及偏移量、地址等進行設置。

比如在function Peer_auto_save上設置斷點,在peer.c的第136行設置斷點:

從斷點處繼續運行

退出gdb

⑶ linux禁止gdb調試

禁止在 Linux 中 gdb 調試的方法有許多,以下是其中的一種方法:

1. 禁用 core mp:可以通過以下命令將 core mp 禁用:

```
ulimit -c 0
```

這將確保應用程序在蘆碧舉崩潰時不會生成任何 core mp 文件。gdb 通常需要訪問 core mp 文件來執行調試操作,因此禁用它們可以幫助防止調試。

2. 使用 ptrace:慧察ptrace 系統調用可以被用來執行程序間的跟蹤和調試,因此禁用它可以防止 gdb 調試。為了禁用 ptrace,可以在 /etc/sysctl.conf 文件中添加以下內容:

```
kernel.yama.ptrace_scope = 1
```

然後更新 sysctl.conf 文件,使設置生效:

```
sudo sysctl -p
```

這將限制 ptrace 僅在其父進程和子進程之間(或在具有適當許可權的特權用戶之間)進行。這樣可以防止普通用戶使用 gdb 調試其他用戶、系統進程或其他特權進程。

請注意,以上方法僅僅是防止 gdb 調試的其中一種方法,還有其陪碧他方法可以繞過這些限制。因此,禁止 gdb 調試並不能完全保證系統的安全性和機密性。如果您對系統安全性有更高的要求,建議請咨詢專業安全人員提供更加嚴格的安全策略。

⑷ 怎樣用Visual GCC遠程調試Linux程序

一. 調試前的准備 1) 將工程所用的*.cpp和*.h文件放到相同目錄下,工程文件*.prj也建在此目錄下,並且導出Makefile到此目錄下;( Windows系統和Linux的目錄路徑表示方法不同,用此法可避免調試時找不到源代碼文件的路徑) 2) 將整個工程目錄打包拷貝到Linux主機上,然後解壓; 3) 在Linux主機上進入工程目錄,運行make編譯,把編譯好的程序(aout.exe)拷貝到Windows主機的工程目錄;(此時Windows主機與Linux主機上工程目錄內的源碼文件和執行程序應該完全相同) 4) 檢查Linux主機上gdb和gdbserver是否正確安裝,版本是否6.6以上; $ gdb -v二. 調試環境設置 1) 在Windows主機上運行GCCIDE,打開工程文件; 2) 假定Linux主機的IP為192.168.1.185,在菜單\調試\調試設置內如下設置:3) 在Linux主機上進入工程目錄,運行gdbserver命令: $ gdbserver 192.168.1.185:2222 aout.exe (aout.exe實際上是elf格式的Linux程序,取此名稱僅僅只是為方便識別) 4) 檢查網路環境,確保調試過程中不因網路故障而影響調試;三. 調試過程 1) 調試過程幾乎與本機調試一樣,只有被調試程序(aout.exe)的輸出是在Linux主機上,不在Windows主機上; 2) 可以在GCCIDE的命令條上發gdb命令,tty命令可以重定向被調試程序的輸出(仍然在Linux主機上);四. 調試中常見問題處理 1) 調試開始後,連不到Linux主機; 檢查Linux主機上是否運行gdbserver,每次調試都要重新運行gdbserver; $ gdbserver 192.168.1.185:2222 aout.exe2) 重新打開工程或重起GCCIDE後,上次的調試設置無效; 目前GCCIDE暫時沒有提供保存上次調試設置的功能。3) 斷點設置沒生效; 如果被調試程序處於運行狀態,不是中斷狀態,gdb不會回到提示符狀態,也不會受理用戶命令;五. 調試日誌

⑸ linux線上程序問題調試命令

根據這些可以查看系統調用的完整性,比如說伺服器連接數一直漲,說明fd沒有close,close調用在上邊有缺失
strace -t -T -v -f -p 16705 -Te write 只看write系仿散游統調用

sudo gcore xxpid 生成mp文件
sudo dlv core binfile core.xxxx 調試coremp文件,查看調用棧、goroutines

查看系統級別日誌 /var/log/messages
messages 日誌是核心系統日誌文件。它包含了系統啟動時的引導消息,以及系統運行時的其他狀態消息。IO 錯誤、網路錯誤和其他系統錯誤都會記錄到這個文件中。其他信息,比如某個人的身份切換為備銷 root,也在這里列出。如果服務正在運行,比如 DHCP 伺服器,您可以在 messages 文件中觀察它的活動。通常,/var/log/messages 是您在做故障診斷時首先要查看的文件。

tcpmp -i lo -nnA 'port 7076' and 'tcp[13] & 4 != 0 ' 抓rst包,發送給7076埠或者是7076埠發出去的
mac osx系統掘罩:sudo tcpmp -i lo0 -nnA 'port 3000'

⑹ linux下code-server離線遠程調試C++代碼

環境:

創建時間:2022-02-24
修改時間:2022-02-24

linux下使用gdb調試程序是一個基本操作。
本文介紹使用code-server + gdb離線遠程調試C++的cmake工程。

最終效果:可猛碰以在沒有GUI界面的centos上,在windows上以瀏覽器的方式調試centos上的C++程序。

鏡像加速

安裝

目錄結構:

test.cpp

myprint.h

myprint.cpp

CMakeLists.txt

注意:必須生成Debug模式,否則無法調試

建議使用CMake Tools進行編譯。

注意:離線下需要同時下載CMake和CMake Tools

linux下驗證應用程序是否為debug版本:

默認使用配置文件:~/.config/code-server/config.yaml

設置密碼

不設置密碼枝改談

瀏覽器中輸入http://IP:8080即可訪問殲慧

安裝C++調試插件 C/C++ extension for VS Code

安裝cmake插件 CMake Tools

注意:離線下需要同時下載CMake和CMake Tools

launch.json

設置斷點,在code-server中按F5進行調試。

code-server左側有變數、監視、調用堆棧、斷點和Moles信息。

⑺ 在Linux中C語言的調試(下面的程序如何調試)

你這程序存在問題太多,你的非零值可以是-1,也可以是大於1,你還是好好看看書吧,而且你跳出來的程序全部扭成一團,看著真不是一般的累

⑻ linux應用怎麼調試的

在 Linux 系統下面,不同的語言有不同的調試方法。如果是對用戶自己編寫的 C 語言源程序(*.c)進行調試,一般使用 gcc 編譯器對 *.c 為後綴的源文件進行高級調試。例如:語法錯誤、數組越界錯誤、內存溢出錯誤等,但是這類錯誤,用戶無法進行底層調試,只能夠根據出錯的原因,對源程序進行修改,然後再使用 gcc 編譯器對源程序進行重新編譯、運行;棚運友如果是對機器級的可執行代碼悄旁進行底層調試,那還需要專門的對底層鏈槐進行調試的工具軟體才行。

⑼ 怎麼在linux系統下調試程序

(1)假設要debug的進程號為1000,運行如下命令:
$ gdb -p 1000
使用此命令即可使gdb附加到進程。
(2)載入libpython腳本
如果你的gdb是redhat或fedora等廠商修改過的,會有--python選項,使用此選項即可指定gdb啟動時載入的Python擴展腳本(此腳本是擴展gdb的,不是我們需要debug的腳本)。
$ gdb --python /path/to/libpython .py -p 1000
如果安裝的是GNU的gdb,就需要打開gdb後手動載入libpython.py腳本
(gdb) python
> import sys
>sys.path.insert(0, '/path/to/libpython.py' )
> import libpython
>end
(gdb)
這時就可以使用py-bt命令列印當前線程的Python traceback了。libpython還提供很多命令,例如py-print列印變數,py-locals列印所有本地變數等等,詳細可打開libpython.py查看。

⑽ 在linux里,c程序的編輯、編譯、調試的詳細步驟是什麼

(1)用工具寫好C程序...比如vi
(2)打開終端,進入你存放C語言代碼的路徑 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c編譯成abc可執行文件
(4)在當前目錄終端下 運行生成的abc,例如: ./abc 前面的.不要掉了
後面可以用gdb進行調試,你可以自己去學習...這是最基本的!!

熱點內容
訪問外網伺服器加速軟體 發布:2024-04-19 17:48:45 瀏覽:695
加密軟體對比 發布:2024-04-19 17:27:05 瀏覽:367
保密管理系統怎麼連接伺服器 發布:2024-04-19 17:26:59 瀏覽:18
廣州社保卡密碼激活在哪裡辦 發布:2024-04-19 17:21:18 瀏覽:368
編譯器和操作系統有關系嗎 發布:2024-04-19 17:20:28 瀏覽:274
數學公式編譯器下載 發布:2024-04-19 17:02:52 瀏覽:987
網頁無法緩存視頻 發布:2024-04-19 16:56:44 瀏覽:615
演算法紅 發布:2024-04-19 16:44:42 瀏覽:625
海量數據存儲與處理 發布:2024-04-19 16:33:46 瀏覽:542
微信聊天記錄怎麼恢復安卓手機 發布:2024-04-19 16:33:24 瀏覽:811