Linux下c++常用调试
进程调试
自己写的代码,直接gdb r/bt就可以了。
正在运行的进程,先ps ax找到进程id。然后gdb进入之后attach 进程id。stop/continue暂停和继续进程。
core了,有core文件,就直接gdb core文件。
线程调试
https://stackoverflow.com/questions/7698209/tracing-pthreads-in-linux
strace works for threads as well. Use strace -f to strace all threads.
To strace only a particular thread, you first have to find its tid (thread id). Threads have thread id's that's really a pid (process id)
Once you know the pid of the thread, use strace -p the_pid to strace that thread.
用strace也是可以跟踪线程的,先找到线程id。
ls proc/进程id/task/
然后就可以用
strace -p 线程id
也可以用gdb。attch之后,info threads;thread thread_no: 进入线程xx,通常紧接而来的是 bt/f 命令;
http://blog.51cto.com/huangfu3342/1609574
内存泄漏
可以用valgrind
今天还学到一招,可以用pmap -p pid查看内存镜像。然后把内存dump出来。dump内存操作如下:
- gdb -p pid,先用gdb挂到运行的进程3。
- 再执行gdb的dump命令,dump binary memory 导出文件名 导出内存起始地址 导出内存结束地址。
再根据dump出的内存内容反推是哪里出了问题。
性能分析
用perf加火焰图。
https://www.cnblogs.com/linyx/p/10031195.html
最新文章
- 使用pm2管理nodejs应用
- Flask 框架入门
- SAP接口编程 之 JCo3.0系列(04) : 会话管理
- Word embedding blog
- 用Express搭建 blog (一)
- [PHP] 安装和配置
- [oracle 使用(1)] win7/10 下Oracle10g的安装与卸载
- Android为TV端助力 post带数据请求方式,传递的数据格式包括json和map
- MySQL 大数据量分页优化
- Sudoku POJ - 3076
- Windows和Linux创建软链接和硬链接
- 集群瓶颈为什么是磁盘io
- Leetcode——Target Sum
- VS2010调试和头文件路径设置
- centos 7下ldap安装
- 修改分区后的 Grub rescue
- flask之基础概念
- Python_Tips[6] ->; is 和 == 的区别
- AtCoder Grand Contest 016 F - Games on DAG
- Scala入门到精通
热门文章
- CF745 C 并查集
- JQuery对RadioButton和CheckButton的操作
- 【洛谷P2676】超级书架
- Vue笔记之模板语法
- JS中函数void()
- vsftpd 安装配置详细教程
- MySQL登录问题1045 (28000)处理步骤【原创】
- spring boot注解学习记
- ../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers【squid安装中】
- PHP 利用nginx的X-sendfile控制下载,提高下载效率