C++
睡懒觉的兔子
这个作者很懒,什么都没留下…
展开
-
类名与关键字之间的宏定义是做什么用的?
有一些类的定义如下: class DLLEXPORT className { ....... }; 问: DLLEXPORT 可以是什么关键词,请列出他们并说明一下他们的作用 谢谢!------解决方案--------------------------------------------------------DLLEXPORT不是关键词。转载 2014-12-09 23:50:49 · 6125 阅读 · 0 评论 -
Linux编程基础——GDB(入门)
前期准备 在程序编译的时候,函数名、变量名会被相应的内存地址所代替,但这些内存地址对于我们来说是不可读的。我们往往需要需要根据函数名、变量名来查找实际的地址,从而读取其值。为了方便调试,gcc增加了一个-g参数,在编译的时候可以在程序集中添加相应的符号信息。 gcc-g hello.c -o hello启动GDB 启动GDB的方法有以下几种: gdb转载 2016-07-21 00:52:07 · 423 阅读 · 0 评论 -
Linux编程基础——GDB(设置断点)
启动GDB后,首先就是要设置断点,程序中断后才能调试。在gdb中,断点通常有三种形式:断点(BreakPoint):在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式:break 在进入指定函数时停住break 在指定行号停住。break +/-offset 在当前行号的前面或后面的offset行停转载 2016-07-21 00:44:13 · 407 阅读 · 0 评论 -
GDB(二) 内存布局
在有效学习如何使用GDB前,你必须理解框架(frame)。因为它们是组成栈(stack)的框架,所以也被称为调用栈框(call stack frames)。要学习栈,我们需要知道一个执行的程序的内存布局。每当一个进程被创建时,内核提供一块可以放置在任何地方的内存。然而,通过虚拟内存 (virtual memory,VM)的魔力,进程相信它拥有计算机上的所有内存。你可以已经听说过当RAM用完时使转载 2015-06-08 12:03:28 · 1424 阅读 · 0 评论 -
GDB(一) 引言
一个调试器(精确地称为symbolic debugger),是一个运行你的程序的应用。它可以单步调试源码、一行一行地执行你想要执行的每一行代码。你甚至可以单步调试你的机器指令。在任何时候,你可以在运行时检查甚至修改任何变量的值。如果你的程序崩溃,一个符号调试器会告诉你程序在哪以及为什么崩溃。你可以执行程序并看到哪些源码行以哪种顺序被执行。 调试器也可以解决无限循环的问题。使用它可以单步转载 2015-06-08 11:43:19 · 508 阅读 · 0 评论 -
GDB(九) 观察和改变变量
ptype命令可以查看变量的类型,简写为pt。gdb> ptype ntype = int也可以查看结构体的类型:gdb> pt mttype = struct mytype { int a; char *b; short int c;}print命令查看变量的值,简写成p。gdb> p mt.a$2 = 30它以最‘舒适”的方转载 2015-06-08 16:04:18 · 1508 阅读 · 0 评论 -
GDB(五) 用GDB检查栈
载入一个程序并设置一个断点把之前的try1.c编译成可执行文件,并用gdb来载入:$ gdb try1GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08Copyright (C) 2011 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later转载 2015-06-08 14:31:47 · 527 阅读 · 0 评论 -
GDB(三) 栈框架和栈
内存布局里的一个区域被称为栈,它是栈框架的集合。每个栈框架表示一个函数调用。随着函数被调用,栈框架的数量会增加,栈也是增长。相反,当函数从它们的调用者那里返回,栈框架的数量减少,栈也会缩减。一个程序由一个或多个通过调用对方来交互的函数组成。每当一个函数被调用时,内存的一块区域为这个新的函数调用分配好,被称为栈框架。这块区域拥有一些重要信息,比如;1、新的被调用函数的所有自动变量的存储空间。转载 2015-06-08 14:18:34 · 775 阅读 · 0 评论 -
GDB(六) 断点
断点有三种类型:breakpoint在程序到达某个特定的点时中断。watchpoint在一个变量或表达式的值发生改变时中断。catchpoint当一个特定的事件发生时中断。对于breakpoint,有两种原因导致GDB没有停在设置中断点的位置。一、由于编译器的优化,代码在程序里没有对应的机器指令;二、不是所有的代码都会编译成机器指令,比如变量声明。通常这种情况下,程序会中断在离中断点最转载 2015-06-08 14:53:18 · 928 阅读 · 0 评论 -
struct stat 简介
在使用这个结构体和方法时,需要引入:struct stat这个结构体是用来描述一个linux系统文件系统中的文件属性的结构。可以有两种方法来获取一个文件的属性:1、通过路径:int stat(const char *path, struct stat *struct_stat);int lstat(const char *path,struct stat *struct转载 2016-10-06 14:35:02 · 465 阅读 · 0 评论