c
会写bug的程序猿
东南大学,六年开发经验,python,c,sql,shell
展开
-
git修改已提交作者信息和注释
git rebase -i原创 2022-07-08 19:10:38 · 878 阅读 · 1 评论 -
memset()函数
语法: #include <string.h> void *memset( void *buffer, int ch, size_t count ); memset( the_array, '\0', sizeof(the_array) );功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:这是将一个数组的所以分量设置成零的很便捷的方法。示例:...原创 2021-09-24 11:00:22 · 133 阅读 · 0 评论 -
gdb-其他
gdb还可以查看寄存器信息,能够进程反汇编代码调试,编译选项除了-g还有-g1、-g2(默认就是这个)、-g3等等。原创 2021-09-15 16:05:48 · 127 阅读 · 0 评论 -
gdb调试多进程socket服务端
gdb在默认设置下调试多进程程序时只会去调试主进程。gdb版本高于v7.0支持多进程的同时调试。只需要设置follow-fork-mode和detach-on-fork即可。Socket服务端调试过程:[root@localhost bin]# gdb socketserver GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7Copyright (C) 2013 Free Software Foundation,...原创 2021-09-15 16:04:34 · 483 阅读 · 1 评论 -
gdb定位死锁问题
本案例借着gdb调试死锁的问题,演示在多线程场景下如何使用gdb调试多线程死锁的调试过程:1.为了重现死锁现象,自己写了个死锁demo[root@localhost bin]# ./deadLock thread_routine_two:lock mutex twothread_routine_one:lock mutex onethread_routine_one:lock mutex twothread_routine_two:lock mutex one2....原创 2021-09-15 16:00:55 · 1405 阅读 · 0 评论 -
gdb调试core dump异常
gdb调试core文件 本案例主要介绍如何用gdb根据进程生成的core文件定位进程core dump的原因。1. 打开core文件生成开关 首先生成core需要调整服务器设置,输入ulimit -c如果结果为0表示没有打开。在/etc/profile中增加ulimit -S -c unlimited > /dev/null 2>&1,然后执行source /etc/profile,再次执行ulimit -c如果结果为unlimited,则表示设置成...原创 2021-09-15 15:57:04 · 709 阅读 · 0 评论 -
gdb教程-实战演练
注意:本内容主要用于常见的gdb命令的熟悉,gdb不是在所有的情况下都能打印出对应的代码,如果调试的服务器上没有源码的情况下只能打印出代码的行号,这个时候需要根据行号自行去跟源码做对照。源码流程调试:1. 进入调试[root@localhost testgdb]# gdb bin/basicFunctionGNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7Copyright (C) 2013 Free Sof...原创 2021-09-15 15:47:19 · 238 阅读 · 0 评论 -
linux gdb调试命令详解
1. list 命令list命令可以所写为l,可以列出所调试程序的代码(前提是代码与可执行程序在同一服务器上),其居具体使用方法如下: list+lineNumber,打印指定行附近的代码。如list 45,gdb会将45行前后的代码打印在屏幕上。 直接输入list,gbd会将gdb当前所处的行以及后面的代码打印在屏幕上。 输入list -,gbd会将gdb当前所处的行前面的代码打印在屏幕上。 list+functionName,打印名称为functionName的函数的上下文的代码。2原创 2021-09-15 15:30:28 · 4610 阅读 · 0 评论 -
gdb简介
GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNⅨ下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能,若要调试程序,需要在编译时加上-g选项即可。gdb的主要功能如下:在程序中设置断点,Debug时遇到断点处暂停。 可以监视某个变量,并利用print函数将该变量的值打印出来。 程序可step-by-step执行。 运行时修改变量...原创 2021-09-15 15:07:14 · 851 阅读 · 0 评论 -
C语言-函数-abort
Syntax: #include <stdlib.h> int abs( int num ); The abs() function returns the absolute value of num. For example: int magic_number = 10; cout << "Enter a guess: "; cin >> x; cout << "Your gues...原创 2020-07-06 09:12:58 · 167 阅读 · 0 评论 -
C语言-函数-abort
Syntax: #include <stdlib.h> void abort( void ); The function abort() terminates the current program. Depending on the implementation, the return value can indicate failure.原创 2020-07-06 09:09:04 · 260 阅读 · 0 评论 -
C语言-函数-acos
acos Syntax: #include <math.h> double acos( double arg ); The acos() function returns the arc cosine of arg, which will be in the range [0, pi]. arg should be between -1 and 1. If arg is outside this range, acos() returns NAN and ...原创 2020-07-06 09:15:13 · 1815 阅读 · 0 评论 -
C语言-函数-Predefined preprocessor variables
Syntax: __LINE__ __FILE__ __DATE__ __TIME__ __cplusplus __STDC__ The following variables can vary by compiler, but generally work: The __LINE__ and __FILE__ variables represent the current line and current file being processed...原创 2020-07-05 16:38:36 · 270 阅读 · 0 评论 -
C语言-函数-#undef
The #undef command undefines a previously defined macro variable, such as a variable defined by a #define原创 2020-07-05 16:36:55 · 273 阅读 · 0 评论 -
C语言-函数-#pragma
The #pragma command gives the programmer the ability to tell the compiler to do certain things. Since the #pragma command is implementation specific, uses vary from compiler to compiler. One option might be to trace program execution.原创 2020-07-05 16:35:01 · 288 阅读 · 0 评论 -
C语言-函数-#line
Syntax: #line line_number "filename" The #line command is simply used to change the value of the __LINE__ and __FILE__ variables. The filename is optional. The __LINE__ and __FILE__ variables represent the current file and which line is being ...原创 2020-07-05 16:33:37 · 2074 阅读 · 0 评论 -
C语言-函数-#include
#include Syntax: #include <filename> #include "filename" This command slurps in a file and inserts it at the current location. The main difference between the syntax of the two items is that if filename is enclosed in angled brac...原创 2020-07-05 16:31:46 · 179 阅读 · 0 评论 -
C语言-函数-#if, #ifdef, #ifndef, #else, #elif, #endif
#if, #ifdef, #ifndef, #else, #elif, #endif These commands give simple logic control to the compiler. As a file is being compiled, you can use these commands to cause certain lines of code to be included or not included. #if expression If ...原创 2020-07-05 16:30:04 · 390 阅读 · 0 评论 -
C语言-函数-#error
Syntax: #error message The #error command simply causes the compiler to stop when it is encountered. When an #error is encountered, the compiler spits out the line number and whatever message is. This command is mostly used for debugging. ...原创 2020-07-05 16:28:00 · 477 阅读 · 0 评论 -
C语言-函数-#define
#define Syntax: #define macro-name replacement-string The #define command is used to make substitutions throughout the file in which it is located. In other words, #define causes the compiler to go through the file, replacing every occurre...原创 2020-07-05 16:26:13 · 494 阅读 · 0 评论 -
C语言-函数-#, ##
The # and ## operators are used with the #define macro. Using # causes the first argument after the # to be returned as a string in quotes. Using ## concatenates what's before the ## with what's after it. Example code: For example, the c...原创 2020-07-05 16:22:12 · 267 阅读 · 0 评论 -
C语言-C函数
#, ## manipulate strings #define define variables #error display an error message #if, #ifdef, #ifndef, #else, #elif, #endif conditional operators #include insert the contents of another file #line...原创 2020-07-05 11:47:13 · 266 阅读 · 0 评论 -
C语言-typedef用法
typedefC语言支持一种叫作typedef的机制,它允许你为各种数据类型定义新名字。typedef声明的写法和普通的声明基本相同,只是把typedef这个关键字出现在声明的前面。例如,下面这个声明:char *ptr_to_char;把变量ptr_to_char声明为一个指向字符的指针。但是,在你添加关键字typedef后,声明变为:typedef char *ptr_to_char;这个声明把标识符ptr_to_char作为指向字符的指针类型的新名字。你可以像使用任何预定义名字.原创 2020-07-03 17:45:10 · 223 阅读 · 0 评论 -
c语言-指针
指针是C语言为什么如此流行的一个重要原因。指针可以有效地实现诸如tree和list这类高级数据结构。其他有些语言,如Pascal和Modula-2,也实现了指针,但它们不允许在指针上执行算术或比较操作,也不允许以任何方式创建指向已经存在的数据对象的指针。正是由于不存在这方面的限制,所以,用C语言可以比使用其他语言编写出更为紧凑和有效的程序。同时,C对指针使用的不加限制正是许多令人欲哭无泪和咬牙切齿的错误的根源。不论是初学者还是经验老道的程序员,都曾深受其害。 变量的值存储于计...原创 2020-07-02 16:19:02 · 822 阅读 · 0 评论 -
gcc 编译报错,有游离的‘\357’ ‘\274’错误
一般是由于粘贴过来的代码,字符格式不对,如空格和分号等。完毕原创 2020-07-01 16:41:07 · 931 阅读 · 0 评论 -
致命错误: stdio.h:没有那个文件或目录
编译c的时候,可能会出现这个错误,该错误排查有两点1.stdio.h书写的问题,例如:拼错了,或者字符格式不对等2.头文件环境没有配置,运行的时候可以gcc x.c -I /usr/include -o run 查看是否能成功,如果成功,说明需要配置头文件环境,头文件环境配置查看百度,如果失败,而且/usr/include里面存在stdio.h,原因肯定是第一点。祝好!...原创 2020-06-30 10:24:39 · 24614 阅读 · 2 评论