Linux 程序调试(GDB,PDB,JDB,VScode)

1 篇文章 0 订阅
1 篇文章 0 订阅

1 Linux C++调试(GDB调试)

基本条件:会写Makefile文件,会使用终端编译。(若不会,可以参考我的博客实例)

参考网站:https://jingyan.baidu.com/article/acf728fd464984f8e410a369.html

Makefile编译运行后,最后生成main文件,调试过程如下:

1)命令行输入$gdb;

2)命令行输入$file main  #调试生成的main文件;

3)命令行输入$l    #查看cpp文件代码;

4)命令行输入$b 13   #在代码的第13行设置断点;

      命令行输入$b 函数名   #在具体某一函数处设置断点;b main即在主函数开始处设置断点;

5)命令行输入$r       #从开始运行代码,在断点处停止;

6)命令行输入$n      #单步调试,从当前代码开始,一步步执行;

7)命令行输入$print 变量      #打印出自己想要看到的变量值;

8)命令行输入$s     #进入函数

9)命令行输入$set args param1 param2……即可加入参数进行调试。(参考:http://visualgdb.com/gdbreference/commands/set_args

cuda-gdb调试caffe参考网站:https://blog.csdn.net/u010158659/article/details/78418701

10)命令行输入$ptype  变量(var)      #输出变量类型

11)命令行输入$x/12xb &var      #查看内存。&var为首地址, 12为数据块字节数

12)命令行输入$b filename:N      #指定文件filename第N行设置断点

 

2 Linux python调试(pdb调试)

参考网站:https://blog.csdn.net/linda1000/article/details/11031771

我直接选用一种常用方法了!

1)在需要调试的python代码中,选定一个断点,在断点对应位置写入(即设置断点):

import pdb
pdb.set_trace()

2)使用命令python *.py运行程序;

3)程序会停在设置的断点处,方可利用多种命令查看变量、查找问题。

命令如下:

(Pdb)p param #查看当前 变量值
(Pdb)l #查看运行到某处代码
(Pdb)a #查看全部栈内变量

停止调试输入q即可。

辅助命令:terminal上内容搜索:Ctrl + Shift + F 

3 linux下java程序调试JDB

1)编译时加入-g

javac -g -classpath ./ helloWorld.java

2)JDB进入调试

jdb -classpath ./ helloWorld

 3)打函数断点(停在main函数)

stop in helloWorld.main

     Deferring breakpoint helloWorld.main.
     It will be set after the class is loaded. 

     某一行打断点:stop at helloWorld:12

 4)运行至main函数

run

     Breakpoint hit: "thread=main", helloWorld.main(), line=4 bci=0
     4            System.out.println("Hello world");

5)部分命令

  • 单步运行:next
  • 查看局部变量:locals
  • 查看当前代码:list
  • 停止:exit

4 VScode调试caffe

这里采用的是比较简单的方式调试caffe,原理就是GDB调试的原理!只是用VScode集成了很多功能。

1)编译

step1_1:修改Makefile.config文件:取消DEBUG的注释;

step1_2:编译。我直接在caffe目录下,采用命令行编译,即:make clean && make all -j32 && make pycaffe #make clean就是清除之前编译产生的文件,make all -j32是为了加速编译,make pycaffe编译的是caffe中的python接口。

2)调试

step2_1:用VScode打开caffe根目录;

step2_2:写GDB的launch.json文件:(调试->添加配置->选GDB(这里没有的话就需要先配置C/C++的扩展)->修改"program"和"args"项)

"program": "${workspaceFolder}/build/tools/caffe.bin",
"args": ["train","--solver=examples/mnist/solver.prototxt"],

step2_3:在程序中插入断点,启动调试即可。

ps:vscode调试需要保证protobuf环境等没有问题,同时我只能在cpp文件中插断点,因此目前只能调试cpu-only模式。

调试模式下的VScode快捷键:F5-运行到下一个断点,F11-单步调试,调试窗口中可以查看当前Local变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值