首页 > 其他分享 >GDB调试面经

GDB调试面经

时间:2024-12-13 18:53:36浏览次数:4  
标签:查看 -- 面经 gdb C++ GDB 线程 内存 调试

1.linux下,如何debug查看内存泄露问题?
在linux系统中可以使用top命令实时显示系统中进程的内存使用情况。free命令显示了系统中空闲和已使用的内存。
使用valgrind是一个强大的内存调试和分析工具,它可以检测内存泄漏和其他内存相关的问题。
'''valgrind --leak-check=yes --show-leak-kinds=all --track-origins=yes ./your_program'''

massif是valgrind的一部分,用于分析程序的堆栈使用情况
'''valgrind --tool=massif --stacks=yes ./your_program'''

2.在多线程程序的调试中如何使用gdb切换到某线程栈帧,查看寄存器值?
gdb中使用info thread查看所以的线程信息,thread 线程id 切换到对应的线程中,使用frame 栈帧id 切换到对应的我栈帧中。info registers 寄存器名 命令查看对应寄存器的值。
gdb的其他命令:bt 查看函数调用堆栈信息,用于发生段错误时,追踪错误。 breakpoint 行数 对应行打断点也可用 b+行数。r重新运行,q推出,n或者s逐行运行,s是单步步入,n单步跳过。
c继续运行。watch+变量名 当被监控变量/表达式的值发生改变时。程序停止运行,p 变量 查看变量值。display 变量名,每运行一次都打印变量值。
info inferiors 查看所以进程,inferiors 切换到对应进程。

3.如何分析生成的core文件?
ulimit -a 可以查看core文件生成选项是否打开。如果未打开,使用 ulimit -c unlimited 打开。但是这只是临时打开,如果需要永久打开,需要在自己的用户目录下.bashrc文件内加上这段命令。
然后使用gdb -c 挂在gdb上面运行,然后可以用gdb命令bt查看发生错误的位置。

4.gcc和g++的区别有哪些?
gcc:C语言编译器,默认编译C代码,编译C++时需要手动链接C++库。
g++:C++语言编译器,默认编译C++代码,自动链接C++标准库。

标签:查看,--,面经,gdb,C++,GDB,线程,内存,调试
From: https://www.cnblogs.com/chhblogs/p/18605602

相关文章

  • 利用Python语言编写和调试一个识别手写数字\文字图像的深度前馈网络
    利用Python语言编写和调试一个识别手写数字\文字图像的深度前馈网络,包括数据预处理、网络模型构建、模型参数初始化和正向推理、反向梯度下降参数寻优,以及实现模型预测的功能。这是一个很经典的,也是机器学习里面基础的内容,这个内容的实现,可以帮助我们更加深刻的理解机机器学......
  • DLL调试,通过加载exe线程
    1、双击运行已经编译好的exe程序2、‌设置DLL工程为启动工程‌:将DLL工程设置为启动工程,这样调试器才能挂接到DLL工程上。‌‌配置调试属性‌:右键单击DLL工程,选择“属性”进入属性设置页面。在“配置属性”中选择“调试”,然后在“要启动的调试器”列表中选择“本地Windows调......
  • Swagger 调试,我不想再复制粘贴token啦~
    作为后端开发,进行WebApi调试,除了使用Postman,Apifox等WebApi调试工具之外,我想使用Swagger进行调试应该是更方便,更常用的方式了吧。那么在需要token授权的情况下,每次调试都需要调用一下登录API,然后复制返回的token,再粘贴到上图的文本框里,点一下Authorize按钮,是不......
  • 2025年Java面经(附答案)
    一、Java基础部分面试题1.Java面向对象的三个特征封装:对象只需要选择性的对外公开一些属性和行为。继承:子对象可以继承父对象的属性和行为,并且可以在其之上进行修改以适合更特殊的场景需求。多态:允许不同类的对象对同一消息做出响应。2.Java中基本的数据类型有哪些以......
  • 利用CURL调试云端接口
    curl是一个功能强大的命令行工具,用于发送各种网络请求。以下是一些使用curl创建网络请求的常见用法:curl-XPOSThttp://localhost:6090/version/webHook\-H"Content-Type:application/json"\-d'{"ref":"refs/heads/master","after":"12345678......
  • 【python应用】命令行pdb调试python程序
    首先准备一段有问题的python代码,如下:#cattest.py#摘自:DevOps和自动化运维实战一书#!/usr/bin/envpythons='0'n=int(s)print(10/n)使用python-mpdb进入调试交互模式,常用指令如下l:展示所有源码内容;n:单步执行;p+变量名:打印变量的值;exit:退出调试......
  • ChatGPT Canvas重大升级:AI内容创作与代码调试的终极工具
    引言OpenAI在“12天的OpenAI”系列活动的第四天宣布了ChatGPTCanvas的重大更新,这一里程碑式的升级将功能扩展至所有ChatGPT用户,显著提升了生产力与代码开发效率。这一更新显著提升了用户的生产力与工作流程效率,新增的多项功能使Canvas成为一个集文本编辑、代码调试和自定......
  • SSM政府项目管理平台9z2ly(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着政府对公共项目投入的不断增加,如何高效、透明地管理这些项目成为了一个亟待解决的问题。传统的项目管理方式存在信息孤岛、......
  • SSM幼儿园管理系统zhna9(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着信息化技术的普及,幼儿园作为教育体系的基础阶段,其管理效率和服务质量直接影响到孩子们的健康成长和家长的满意度。传统的幼......
  • SSM志愿者信息管理系统7gqe1(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容题目:志愿者信息管理系统设计与实现一、研究背景与意义随着社会公益事业的蓬勃发展,志愿者活动逐渐成为推动社会进步的重要力量。然而,传统的志愿者......