1. 1
  2. 2
  3. 3
最新发布 每页10条   共279条   当前第3页
  • 应该选

    GDB高级技巧—反向调试,让代码回退的方法

    yexindonglai@163.com 2023-09-18 22:33 c++

    1400°

    0

    1、什么是反向调试2、reverse指令3、record指令3、实战1、调试代码2、打包3、开启gdb调试4、在第5行打上断点5、运行到断点处6、record开始记录程序的执行轨迹7、next单步执行8、reverse-next回退9、总览1、什么是反向调试反向调试是一种高级调试技术,可以让程序已经执行了一段时间后,回退到过去的状态并重新执行。这意味着你可以回到程序执行中的任何点,查看变量的值、堆栈跟踪以及程序执行路径。反向调试可以让我们快速、准确地定位出程序中的错误或异常的根本原因。简单来说,就是一种可以让程序逻辑逆序执行的调试技术。通过它,你可以随时中断程序的正常执行,然后逆序执行,让程序
  • 应该选

    手把手教你实现简单时间轮算法

    yexindonglai@163.com 2023-09-07 16:15 定时任务

    654°

    0

    1、时间轮概述传统定时任务时间轮算法2、定时任务流程3、上代码1、时间轮概述传统定时任务如果想定期执行一个操作,只需要起一个定时器,设置时间间隔,然后时间达到之后就执行任务,一个定时器对应一个任务,如果任务很少的情况下这样做没什么问题,但是任务有成千上万个的时候,就得起很多的定时器,不断轮询,这对系统的内存和cpu都产生了很大的压力,程序还没开始跑呢,定时器已经满天飞了…以下是纯手写的简单定时器代码,用死循环执行,因为一个定时器只针对一个任务,所以开销巨大,不建议使用publicvoidjob(){while(true){sleep(延时N秒);...执行任务}}时间轮算法时间轮算法的核心是,
  • 应该选

    定时任务 cron表达式 ? 和 * 的区别

    yexindonglai@163.com 2023-09-07 11:13 定时任务

    638°

    0

    1、cron格式2、关于【日期】与【星期几】的说明3、常用表达式符号说明:4、表达式举例1、cron格式【秒数】【分钟】【小时】【日期】【月份】【星期几】【年份(可省略)】2、关于【日期】与【星期几】的说明1、【日期】与【星期几】两者为互斥的,不能同时设置。这个比较容易理解,假设日期设置为1,星期几也设置为1,那含义是什么:每月1日且为周一时触发,可能一年之中没用任何天能满足上述条件,更重要的是什么人能有这种xx的需求呢?2、【日期】与【星期几】中任何一个设置值(包含*),另一个必需使用?来进行屏蔽,此时?起到屏蔽的作用。?只能出现在【日期】与【星期几】中,且不能同时出现,比如以下是每小时10
  • 应该选

    git rebase使用教程 以及和merge的区别

    yexindonglai@163.com 2023-08-31 09:19 git

    507°

    0

    什么是rebaserebase原理什么是rebaserebase和merge相似,但又不完全相同,本质上都是用来合并分支的命令rebase原理现在我们通过图片来直观地了解下rebase指令;首先建两个分支master和feature,其中feature是在提交点B处从master上拉出的分支;master上有一个新提交M,feature上有两个新提交C和D这时候我们通过以下命令,将feature合并到master分支gitcheckoutmastergitrebasefeature执行命令后,就会将feature合并到master分支,他们的记录会插入到后面。如下图:
  • 应该选

    解决clion 2023 远程开发remote模式 - 头文件提示 : file not found(找不到Linux头文件)

    yexindonglai@163.com 2023-08-27 22:52 c++

    1419°

    0

    问题描述解决1、打开Registry2、勾选clion.remote.tar.dereference3、Resyncwithremotehosts问题描述最近在用远程开发,就是在windows系统上开发linux程序,但是用最新版的clion报错了,在clion找不到Linux中的库文件,所以就没有代码补全,但是编译是正常的。更具体点,找得到iostream但是找不到sys/wait.h、unistd.h;因为iostream是windows支持的,而sys/wait.h、unistd.h是linux系统支持的;如下图鼠标移上去会提示:filenotfound解决1、打开Registry首先双
  • 应该选

    linux守护进程的作用和原理、创建守护进程的三种方式

    yexindonglai@163.com 2023-08-14 23:37 c++

    931°

    0

    一、什么是守护进程二、守护进程和普通进程的区别三、创建守护进程的三种方式四、举个栗子一、什么是守护进程守护进程(Daemon)是在操作系统中运行的一种特殊类型的后台进程。它在系统启动时启动,并在系统关闭时终止,与用户交互的终端会话无关。守护进程通常在后台运行,不会与用户进行直接的交互,也不会被用户终止。守护进程通常用于执行一些系统级的任务和服务,比如网络服务、数据库服务、日志记录、定时任务等。它们在系统运行时一直保持活动状态,为其他应用程序或用户提供服务二、守护进程和普通进程的区别守护进程相对于普通进程的主要区别在于其独立于终端会话,并且在后台持续运行。守护进程通常用于以下几个方面:后台运行:
  • 应该选

    CLion引入第三方库 gtest 并使用

    yexindonglai@163.com 2023-07-24 23:43 c++

    1012°

    0

    步骤1、创建一个项目2、下载gtest源码3、修改跟项目的CMakeLists.txt文件4、修改main.cpp文件5、编译6、运行步骤1、创建一个项目选择C++Executable创建好后如下图2、下载gtest源码直接在项目的根目录下载,gitclonehttps://github.com/google/googletest.git下载好了,如下图,是个cmake项目嫌麻烦的话也可以直接在github上下载zip版本的源码3、修改跟项目的CMakeLists.txt文件cmake_minimum_required(VERSION3.24)project(gtest_lib)set(CMA
  • 应该选

    使用Valgrind查找内存泄露和程序崩溃

    yexindonglai@163.com 2023-07-24 20:01 c++

    1067°

    0

    valgrind简介valgrind格式常用valgrind选项valgrind主要功能1、Memcheck2、Callgrind3、Cachegrind4、Helgrind5、Massif一、安装valgrind自行下载源码安装在线安装二、举个栗子1、准备一个会崩溃的c++代码2、编译3、运行valgrind4、结果分析valgrind简介Valgrind是一个GPL的软件,用于Linux(Forx86,amd64andppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C语言中的malloc和free或者C++中的new和delete。使用Valg
  • 应该选

    使用signal信号机制 + backtrace函数打印出程序崩溃后的堆栈信息

    yexindonglai@163.com 2023-07-23 21:26 c++

    812°

    0

    前言signal是什么backtrace是什么代码示例运行结果前言signal是什么signal()函数是C语言中用于处理信号的函数,它用于注册信号处理函数。信号是在程序执行过程中由操作系统或其他进程发送给进程的通知,例如,程序错误、外部事件等backtrace是什么backtrace函数是一个用于获取调用栈信息的函数,它可以用于调试和错误处理。通常会配合backtrace_symbols函数一起使用;backtrace()函数用于获取当前线程的调用栈信息,获取调用栈中每个函数的返回地址;backtrace_symbols()函数将backtrace()函数获取到的调用栈信息转换为可读的字符串
  • 应该选

    C/C++ CoreDump配合gdb分析程序崩溃教程

    yexindonglai@163.com 2023-07-23 14:04 c++

    938°

    0

    什么是Coredump只有程序崩溃了才会生成CoreDump吗?一、前置工作1、核心文件说明2、设置核心文件存放地址3、设置核心文件大小二、模拟程序崩溃1、准备崩溃程序2、编译并运行3、使用gdb分析核心转储文件完什么是CoredumpCoredump(核心转储)是在程序发生严重错误或崩溃时,操作系统将程序的内存状态和其他相关信息保存到一个文件中的过程。这个文件被称为核心转储文件或核心文件。核心转储文件记录了程序在崩溃时的内存映像、寄存器的值、堆栈信息以及其他相关信息。核心转储文件对于调试程序崩溃和分析崩溃原因非常有用。通过分析核心转储文件,可以了解程序在崩溃时的状态,帮助开发人员定位和修复错