首页
学习
活动
专区
工具
TVP
发布

gdb调试基础命令

gdb调试 复习并整理gdb 1. 调试准备 被调试的程序需要生成调试符号信息,即在gcc/g++编译时加上-g选项。...启动gdb调试的方法 直接调试目标程序 gdb filename # filename为要启动的调试程序名称 attach到进程 gdb attach pid #attach到pid对应的进程 调试core...4. gdb调试多线程程序 4.1 调试多线程程序的方法 先gdb让程序跑起来,然后Ctrl+C中断程序,使用Info threads命令查看当前进程下有多少线程在运行。...set scheduler-locking step当且仅当使用next或step命令做单步调试时会锁定当前线程,如果使用until,finish,return等线程内调试命令(它们不是单步控制命令),...5. gdb调试多进程程序 5.1 方法一 先在一个shell窗口中调试父进程,等待子进程被fork出来后,再开启另外一个shell窗口使用gdb attach命令将gdb attach到子进程上。

1.4K10
您找到你想要的搜索结果了吗?
是的
没有找到

利用 tee 命令调试shell脚本

在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临时文件中...144392 为了和 game_log1 进程实际的进程ID对比,我们单独执行 ps -ef | grep -w game9_log1 | grep -v grep | awk '{print $2}' 命令...,确得到了不同的结果,我们在脚本中加入 tee 命令输出管道的中间结果,调整之后的的脚本如下: processid() { ipid=$(ps -ef | grep -w $1 | tee out1...localhost ~]$ cat out3 130530 从上面的测试结果中看出,最后输出的结果是正确的 总结 多层管道在shell脚本中是很常见的用法,使用起来也非常方便和高效的,但是脚本一旦出问题调试就会变得困难起来...,合理的使用 tee 命令输出管道的中间结果,可以快速的定位问题所在

72400

curl命令调试接口「建议收藏」

现在我们切入主题,在我们平时开发接口完成后,需要上线联调接口,而接口往往和业务逻辑精密联系,想要调试接口,就需要将业务测一遍,那么有没有更好的办法使得调试更简单?...在这篇文章中,我将常用的接口分为两类: 第一类:自己开发服务于自己系统的接口,该类接口调试可以在本地使用postman工具调试; 第二类:不是自己开发,调用别人能力接口服务于自己的系统,该类接口我们就可以使用...curl命令调试。...二.案例讲解 由于我们平时遇到接口请求都是post请求,所以接下来我们以post请求为例,分别探讨http协议和https协议两种情况下如何通过curl命令调试接口; 1.http协议 curl -v...接下来,我们来分析以下这个命令: -v:显示版本信息 -X:指定请求方式 -H:指定请求头(可校验调用方是否有权限,通过判断请求头信息,如果有规定的请求头信息,则允许调用,否则拒绝调用) -d :请求报文

1.6K30

gdb调试容器和命令保存

一、gdb调试容器或者智能指针的内容 有时候我们需要debug一些core文件或者程序,但是如果遇到STL容器,p打印出的是一些红黑树或者原始的数据机构,这给我们调试带来不必要的麻烦。...顺带说下,在~/.gdbinit可以放入你常用的一些gdb设置命令。...还有一个比较有用的是保存gdb调试历史,set history save on 一个相关的命令是set history remove-duplicates ....该命令是“控制删除命令历史列表中重复的历史条目。如果计数不为零,gdb 将回顾最后计数的历史条目并删除与当前条目重复的第一个条目。添加到命令历史列表中。如果计数是无限制的,那么此后视是无界的。...如果希望命令历史记录不依赖于所在的目录,需要包含: set history filename ~/.gdb_history

1.8K400

iOS代码调试之LLDB命令

常用LLDB命令 LLDB调试模式开启:首先在需要调试的代码处设置断点,当程序走到断点时,就能在控制台区看到我们已经进入LLDB模式了,如下图所示: ?...在LLDB模式下,根据需要输入相关的LLDB调试命令既可进行代码调试,下面小编将给大家介绍几款常用的LLDB命令。 1.打印 打印是代码调试中最常用的命令,相关的命令有:p和po。...2.expression 修改参数值 expression命令调试过程中最有价值有命令了,既可以打印值也可以修改值。...6.帮助命令 1) help 可以列出所有可以用于调试代码的命令及功能说明,如下图: ?...结束语 本文小编分享了测试工作中iOS代码调试之常用的几类LLDB命令,如果需要用到其他的LLDB命令可以随时借助help命令进行查询其用法,当然iOS代码调试除了LLDB命令之外,还可以进行断点调试

1.6K20

GDB 常用的调试命令概览

GDB 常用命令列表 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 step s 如果有调用函数,进入调用的函数内部,相当于...监视某一个变量或内存地址的值是否发生变化 list l 显示源码 info info 查看断点 / 线程等信息 ptype ptype 查看变量类型 disassemble dis 查看汇编代码 set args 设置程序启动命令行参数...show args 查看设置的命令行参数 扩充: gcc 常用选项 选项 选项说明 -v 查看gcc版本号 -I (大写 i ) 指定头文件目录,注意-I和目录之间没有空格 -c 只编译,生成.o...文件,不进行链接 -o 输出成指定文件名 -g 包含调试信息 -On n=0∼3 编译优化,n越大优化得越多 -Wall 提示更多警告信息 -E 生成预处理文件 -M 生成.c文件与头文件依赖关系以用于

2K20

驱动开发:WinDBG 常用调试命令总结

Windbg是Microsoft公司免费调试调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。...*Load* // 列出kernel32模块中所有含Load字样的符号 进程与线程操作 | // 列出调试进程 !...向高地址方向搜索符号(注:函数是符号的一种) dds 02a9ffec // 从02a9ffec地址处,向高地址方向搜索符号(注:函数是符号的一种) dds // 执行完dds 02a9ffec后,可通过dds命令继续进行搜索...heap -a 00140000 // 选取一个堆的地址,打印该堆的信息,比上面打印内存命令更详细直观 其他命令 dt ntdll!...*file* # 下面命令将列出ntdll导出的文件操作相关的函数名 dt _FILE_INFORMATION_CLASS 查看一个结构定义 dt ntdll!

73320

linux下gdb常用的调试命令

用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。...呵呵,有时迷茫了自己处在什么堆栈的深处,这是使用where命令能够清晰的看到自己的位置,有时在循环太多让人受不了了,可使用u或者finish或者jump命令来跳出去。...和 汇编 i) u 内存单位(b: 1字节; h: 2字节; w: 4字节; g: 8字节) set vairiable a = 100 可以修改变量的值 commands 指定到了特定断点后执行的命令序列....gbinit gdb会从这个文件读取配置 cat ~/.gdb_history 呵呵,对于gdb时想要查看长的字符串老是显示不全,怎么半呢,gdb参看数组字符串时默认只是显示部分的数据,通过这个命令可以修改...: set print elements 0 默认这里设置是200,设置为0表示没有限制 还有其它一些set命令可以试试: set print address set print address

2.9K20

linux常用命令--开发调试

前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。...cmdTest的类型为elf,是64位、运行于x86-64的程序,not striped表明elf文件中还保留着符号信息以及调试信息等不影响程序运行的内容。...但是要特别注意的是,“瘦身”之后的elf文件由于没有了符号信息,许多调试命令将无法正常使用,出现core dump时,问题也较难定位,因此只建议在正式发布时对其进行“瘦身”。...--gdb gdb是一个强大的调试工具,但这里仅介绍两个简单使用示例。...有时候程序可能已经正在运行,但是又不能终止它,这时候仍然可以使用gdb调试正在运行的进程: gdb processFile PID #processFile为进程文件,pid为进程id,可通过ps命令查找到

1.4K30

Javascript调试命令——你只会Console.log() ?

注意:因为Console 对象提供对浏览器控制台的接入 所以在不同浏览器中的支持及表现形式可能不太一样,但是调试内容只有我们开发者会看,所以保证开发环境能用这些方法就可以了,下面演示全部都为Chrome...追踪调用堆栈 使用Console.trace()来追踪函数被调用的过程,在复杂项目时调用过程非常多,用这个命令来帮你缕清。...性能分析 使用Console.profile()和Console.profile()进行性能分析,查看代码各部分运行消耗的时间,但是我在Chrome自带的调试工具中并没有找到在哪里查看这两个方法生成的分析报告...应该需要其他的调试工具。...总结 Console的用法很多,有些再调试过程中非常实用,可以节省很多时间。当然我知道debug还是用断点调试的方法比较好,但是小问题用“printf大法”也是很好用的(滑稽脸)。

1K40
领券