GDBC对战腾讯对战平台怎么改建硬

平时做算法题目, 没少用到 GDB, 但今天才意识到 Project 的调试方法与单个 cpp 文件的不同之处, 比如 gdb list 命令, 在单个 cpp 文件中列出的是源代码, 但在 project 中却什么都不显示
Project Debug 时, file 参数的使用&[1] 有讲解, UP 主问的问题和我遇到的一样, 只不过, 没能解决我的问题(我的问题更2B一些).
出现的错误
1. 执行命令, make, gdb test, gdb l
No symbol table is loaded.
最终解决方法是在 make 里, 每生成一个 .o 文件都需要 -g &参数
2. 段错误 segment fault
段错误是一种内存保护机制, 当进程访问许可空间范围以外的内存时便会引发内核的 "一般保护性异常", 内核向程序发出 SIGSEGV(11) 信号, 而这个信号的 handler 默认工作就是在控制台打出一个 segment fault 并产生内核转储文件(Core), 结束掉当前正在运行的程序.
段错误的成因有一下几种(不完全统计)
2.1 程序访问系统数据区, 比如对为 NULL 的指针解引用, 或写入数据
2.2 内存访问越界 (数组越界)
2.3 对 malloc, new 申请的空间二次释放
2.4 操作系统的段保护机制, 导致因缓冲区溢出而对非法内存访问
2.5 无限递归, 导致堆栈溢出
2.6 fclose 对一个 FILE* 二次释放
调试工具 Valgrind
Valgrind 是一款用于内存调试, 内存泄露检测和性能分析的软件开发工具, 但 Valgrind 只能检测到堆的异常和泄露, 对栈的爱莫能助.
Valgrind 原理与用法
我们刚才提到段错误会引发内核转储(Core), Core 记录了 down 掉程序的映像和一些调试信心, valgrind 需要 core, 但是并不是所有的系统都默认提供 core, 可通过 ulimit -a 查看 core 是否默认设置, 我查了下, 自己的机器是 (blocks, -c) 0, 说明 core 默认不提供, 所以需要通过 ulimit -c 1024 来设置 core 大小. 但通过 ulimit 设置在重启机器后失效.
我们重新编译自己出错程序, 在 g++ 后加上 -g -rdynamic 参数, -g 是添加调试信心, 而 -rdynamic 是通知链接器把所有符号添加到动态符号表, 再次运行程序, ls, 会看到一个 core 开头的文件, 我们用 gdb ./yourprogram core 来查看是哪个文件哪一行, 什么代码出现了异常. 假如你没有看到 core 文件, 那么重新检查下 ulimit 设置.
[1]&http://stackoverflow.com/questions/9245685/gdb-no-symbol-table-is-loaded
[2]&http://through-my-eyes.diandian.com/post//
阅读(...) 评论()拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3db6b534c85343bf-ua98).
重新安装浏览器,或使用别的浏览器后使用快捷导航没有帐号?
只需一步,快速搞定
只需一步,快速搞定
查看: 1491|回复: 10
求GDB-C的改法。对战
该用户从未签到主题帖子积分
Love the 33R
LV 10.会员, 积分 4129, 距离下一级还需 371 积分
LV 10.会员, 积分 4129, 距离下一级还需 371 积分
求GDB-C的改法。对战&&
GDB-C& &STI版本和普通版本有什么区别?
现在E9的主流改法有2种,那么GDB-C有什么改法呢?
该用户从未签到主题帖子积分
LV 9.会员, 积分 2699, 距离下一级还需 301 积分
LV 9.会员, 积分 2699, 距离下一级还需 301 积分
我自己GBD-C瞎改的
原包原翼子弹有孔非碳三爪
签到天数: 1 天[LV.1]初来乍到主题帖子积分
LV 12.会员, 积分 9772, 距离下一级还需 2228 积分
LV 12.会员, 积分 9772, 距离下一级还需 2228 积分
那不是STI版和普通版好么- - GBC本来就是STI 特别版是在STI款的情况下做了一个C版本的特殊调校
该用户从未签到主题帖子积分
GDBC 底色選白色和紅色是特別版
包翼不一樣...
该用户从未签到主题帖子积分
LV 8.会员, 积分 1711, 距离下一级还需 89 积分
LV 8.会员, 积分 1711, 距离下一级还需 89 积分
请问你说的E9的主流改法&&都是什么改
该用户从未签到主题帖子积分
Love the 33R
LV 10.会员, 积分 4129, 距离下一级还需 371 积分
LV 10.会员, 积分 4129, 距离下一级还需 371 积分
继续求·······
签到天数: 1 天[LV.1]初来乍到主题帖子积分
LV 12.会员, 积分 9772, 距离下一级还需 2228 积分
LV 12.会员, 积分 9772, 距离下一级还需 2228 积分
k8a7lcxnu 发表于
继续求·······
官方称特别版比普通版低五毫米底盘而已 但我实际用过&&虽然是很小很小的影响 但是仔细判断还是察觉的出来的 硬度和极速降低了 加速和稳定性做了强化 但也只是很小很小的效果..有信心的话用哪种都一样
该用户从未签到主题帖子积分
LV 9.会员, 积分 2661, 距离下一级还需 339 积分
LV 9.会员, 积分 2661, 距离下一级还需 339 积分
话说谁有GDBC,2转3的底卡?
签到天数: 4 天[LV.2]偶尔看看I主题帖子积分
LV 10.会员, 积分 3323, 距离下一级还需 1177 积分
LV 10.会员, 积分 3323, 距离下一级还需 1177 积分
gdbc 也有特别版!这个游戏特别版真多!e8 ,r34,现在还有gdbc了!哪天我自己好好看看!
该用户从未签到主题帖子积分
LV 5.会员, 积分 232, 距离下一级还需 68 积分
LV 5.会员, 积分 232, 距离下一级还需 68 积分
lamken123 发表于
GDBC 底色選白色和紅色是特別版
包翼不一樣...
原来是这样的,怪不得。
签到天数: 1 天[LV.1]初来乍到主题帖子积分
花見映畫株式會社社長
LV 12.会员, 积分 8795, 距离下一级还需 3205 积分
LV 12.会员, 积分 8795, 距离下一级还需 3205 积分
死亡草 发表于
话说谁有GDBC,2转3的底卡?
我有啊!~怎麼啦?
发帖总数达到5000即可获得此勋章.
论坛在线时长达到240小时即可获得此勋章.
论坛在线时长达到2400小时即可获得此勋章.
发帖总数达到500即可获得此勋章.
新人进步奖
新人有很大的进步可以得到这个奖章!
站长推荐 /2
Lutak带你看街霸CPT一周新鲜速报
上周梅原丢了行李,这周竟是杰娃?
韩国Inf萎靡不振?不存在的!
小鲜肉古烈打不了卡琳?我不信!
本周精彩,尽在游快报!
游聚手游《争雄三国》1服火爆开启!(精彩活动:绝版头像、绝版背景、最强称号)赶快来拿!!
Powered bygdb怎么更改调试属性中的工作目录_百度知道
gdb怎么更改调试属性中的工作目录
我有更好的答案
使用return命令取消当前函数的执行,有一个寄存器用于保存当前代码所在的内存地址:line格式,可以是+num这种偏移量格式。
注意,jump命令不会改变当前的程序栈中的内容, , C++, Fortran, PASCAL:
jump &linespec&
指定下一条语句的运行点。&linespce&可以是文件的行号.cc, .cp,那么该表达式的值会被认作函数的返回值。五、强制调用函数
call &lt,GDB会认为是C++程序。而后缀是“.f, .F”的,GDB会认为是Fortran程序,print后面可以跟表达式,GDB并不报告这种错误,所以保险起见,在你改变程序变量取值时,最好都使用set var格式的GDB命令,那么你可以使用Pascal的语法:x:=4,print则显示函数返回值,并把该值存入历史数据中。
jump &address&是代码行的内存地址;,UNIX的系统信号量通常从1到15。所以&singal&取值也在这个范围。如,并立即返回:中断信号Ctrl+C。这非常方便于程序的调试,可以在程序运行的任意位置设置断点。你可以使用return命令强制函数忽略还没有执行的语句并返回。
return &lt,如果函数返回void,call则不显示, ,并在该断点用GDB产生一个信号量,这种精确地在某处产生信号非常有利程序的调试。
语法是:signal &lt,如果指定了&expression&, , ,你可以使用set var命令来告诉GDB,width不是你GDB的参数:
set $pc = 0x485三、产生信号量
使用singal命令,可以产生一个信号量给被调试的程序,可以是expression&gt。
single命令和shell的kill命令不同、强制函数返回
如果你的调试断点在某个函数中,并还有语句没有执行完。
在某些时候,程序运行时.c++”的;C++的语法,意为把变量x的值修改为4。
二、跳转执行
一般来说,系统的kill命令发信号给被调试程序时.C;singal&gt, Java.cxx。这个功能可以由GDB的jump命令来完,set width是GDB的命令,所以。所以,jump命令也就是改变了这个寄存器中的值;
表达式可以是函数,以此达到强制调用函数的目的。并显示函数的返回值,如果函数返回值是void.cpp一、修改变量值
修改被调试程序运行时的变量值,在GDB中很容易实现,所以,当你从一个函数跳到另一个函数时,当函数运行完返回时进行弹栈操作时必然会发生错误,可能结果还是非常奇怪的,甚至于产生程序Core Dump,还可能有些情况,很有可能你的变量和GDB中的参数冲突,如:
(gdb) whatis width
type = double
(gdb) p width
(gdb) set width=47
Invalid syntax in expression.
因为。如。表式着下一条运行语句从哪里开始,出现了“Invalid syntax in expression”的设置错误,此时;expr&gt,也就是说,GDB可以修改程序的执行顺序。
熟悉汇编的人都知道;
这里的&address&gt,GDB会根据你所调试的程序来确定当然的调试语言,是由GDB截获的,而single命令所发出一信号则是直接发给被调试程序的。
四,那么就不显示。
另一个相似的命令也可以完成这一功能——print,所以也可以用他来调用函数,print和call的不同是。文件名后缀为“,而是程序的变量名,如:
(gdb) set var width=47
另外:C,如果你当前调试的语言是Pascal,比如:发现文件名后缀为“.c”的,GDB会认为是C程序。于是,你可以使用“set $pc”来更改跳转执行的地址:
(gdb) print x=4
x=4这个表达式是C&#47, Chill, assembly, 和 Modula-2。一般说来,可以让程序执行随意跳跃。 在不同语言中使用GDB——————————GDB支持下列语言,被调试程序会按照程序代码的运行顺序依次执行,使用GDB的print命令即可完成。所以最好是同一个函数中进行跳转。GDB提供了乱序执行的功能
为您推荐:
其他类似问题
gdb的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客访问: 91771
博文数量: 14
博客积分: 226
博客等级: 二等列兵
技术积分: 221
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++
ptype obj/class/struct查看obj/class/struct的成员,但是会把基类指针指向的派生类识别为基类set print object on这个选项可以看到派生对象的真实类名,虽然ptype也可以打印出对象set print pretty on以树形打印对象的成员,可以清晰展示继承关系,设置为off时对象较大时会显示“一坨”如调试mysql Item类的派生类对象时会这样显示:&set print vtbl on用比较规整的格式来显示虚函数表推荐设置这两个:set print object onset print pretty on
阅读(5504) | 评论(0) | 转发(5) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 11对战平台怎么改名字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信