首页 > 其他分享 >【gdb】gdb attach

【gdb】gdb attach

时间:2023-09-20 09:56:46浏览次数:38  
标签:std queue int value Queue attach gdb

gdb attach

gdb attach的用法:

#include <stdio.h>
#include <thread>
#include <queue>
#include <mutex>
#include <condition_variable>
#include <chrono>
 
namespace {
 
class Queue {
public:
	Queue() = default;
	~Queue() { }
 
	void Init(int num) {
		for (int i = 0; i < num; ++i) {
			queue_.push(i);
		}
	}
 
	int Pop() {
		std::unique_lock<std::mutex> lck(mutex_);
		while (queue_.size() == 0) {
			cv_.wait(lck);
		}
 
		int value = queue_.front();
		queue_.pop();
 
		return value;
	}
 
	void Push(int value) {
		std::unique_lock<std::mutex> lck(mutex_);
		queue_.push(value);
		cv_.notify_all();
	}
 
private:
	std::queue<int> queue_;
	std::mutex mutex_;
	std::condition_variable cv_;	
}; // class Queue
 
bool running = false;
 
void push(Queue& q) {
	int value = 100;
	while (running) {
		q.Push(value++);
		std::this_thread::sleep_for(std::chrono::minutes(100));
	}
}
 
void pop(Queue& q) {
	while (running) {
		fprintf(stdout, "pop value: %d\n", q.Pop());
		std::this_thread::sleep_for(std::chrono::seconds(1));
	}
}
 
} // namespace
 
int main()
{
	fprintf(stdout, "test start\n");
 
	Queue q;
	q.Init(2);
 
	running = true;
	std::thread th1(push, std::ref(q));
	std::thread th2(pop, std::ref(q));
 
	std::this_thread::sleep_for(std::chrono::seconds(10));
	running = false;
	th1.join();
	th2.join();
 
	fprintf(stdout, "test end\n");
	return 0;
}

 

参考资料

1. gdb attach的使用(调试已在运行的进程)

标签:std,queue,int,value,Queue,attach,gdb
From: https://www.cnblogs.com/sunbines/p/17716530.html

相关文章

  • 在Linux系统中使用gdb调试一个代码
    首先我们知道在使用vs时,我们时可以通过调式一段代码来找出我们这段代码的逻辑错误在哪里的,但是在Linux中没有对应的图形化界面,我们应该怎么去调试一个代码呢?这里就需要使用道Linux中的一个工具叫做gdb。首先要检测你的操作系统中是否安装了gdb。检测安装gdb使用下面的指令gdb--ver......
  • gdb中的call命令
     gdb----使用call在任何位置直接执行函数 https://blog.csdn.net/ustc_sse_shenzhang/article/details/121006320 gdbcall跟踪函数 https://blog.csdn.net/qq_40008325/article/details/103465157 GDB秘技--调试时执行代码中的特定函数 https://blog.csdn.net/HorkyCh......
  • gdb的使用
    1、背景程序的发布方式有两种,debug模式和release模式Linuxgcc/g++编译出来的二进制程序,默认是release模式要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项例如gcctest.c-omybin-g2、命令功能gdbbinFile(开始使用),ctrl+d或quit(退出)测试代码:调试命令:GDB中可以直接回车......
  • gdb相关
    命令                  命令缩写            命令说明setargs                               设置主程序的参数。break                  b              设置断点。run ......
  • shardingdb:支持分片和并发读写的 GoLevelDB
    概述shardingdb是一个开源包,旨在为GoLevelDB增加分片和并发读写功能。它可以作为LevelDB的替代品,方便地集成到现有项目中。本博客将介绍shardingdb及其功能,并介绍如何在您的项目中使用它。特点-分片支持:shardingdb使您能够将数据分布在多个LevelDB实例中,提高性能和......
  • 在PG或HGDB上启用块校验checksum
     瀚高数据库目录环境文档用途详细信息  环境系统平台:Linuxx86-64RedHatEnterpriseLinux7版本:14,N/A 文档用途用途使用checksum,对数据库提供块校验,以发现隐藏的块损坏问题,注意仅适用于原生PG或HGDB企业版,或未使用SM4加密的HGDB安全版。HGDB安全版假如使用了SM4加密,会与che......
  • mac 安装brew,安装gdb
    执行/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"最后会给出警告说  接下来的话,那我们把路径放进去  在文件末尾编辑您的~/.zshrcexportPATH=/opt/homebrew/bin:$PATH之后,点击source~/.zshrc您的终端或重......
  • 用 kGDB 调试 Linux 内核
    1简介这个文档记录了用kGDB调试Linux内核的全过程,都是在前人工作基础上的一些总结。以下操作都是基于特定板子来进行,但是大部分都能应用于其他平台。要使用KGDB来调试内核,首先需要修改config配置文件,打开相应的配置,配置内核启动参数,甚至修改串口驱动添加poll支持,然后......
  • GDB的 入门
    在Linux上做C/C++开发少不了这家伙,但总是用了玩,忘了继续搜,发现太浪费时间,所以特地将开发过程中使用到的一些命令记录下来,不求全,只求实用。 如果需要使用GDB调试C/C++程序,必须首先在编程C/C++程序时,指定编译器的-g参数,编译器便会将调试信息加到可执行文件中。编译命......
  • Windows下python,psycopg2连接HGDB
    瀚高数据库目录环境文档用途详细信息环境系统平台:N/A版本:4.5文档用途 本文介绍在HGDB使用sm3认证时,python使用psycopg2连接HGDB的方法。详细信息 Python连接HGDB可以使用psycopg2、Django,Django是依赖psycopg2的,底层用的都是libpq,pip安装的psycopg2自带libpq。因此在一般情况下......