关于vector的异常捕获问题 ,求指教

huobaovs 2014-07-31 04:12:11
首先声明我是个小菜鸟,如果问的问题很白目 请大家见谅哈


xcode开发环境, 测试代码如下:

vector<std::string>res;
std::string aa=res.front();


程序运行到此处直接蹦掉了, 在控制台看不到任何log输出, 是不是需要自己手动去catch啊??


如果是需要自己手动catch, 对于已经写好的项目 , 需要一个个去改嘛? 有没有一个底层点的方法去实现捕获。。
...全文
411 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmppok 2014-08-01
  • 打赏
  • 举报
回复
程序不写好,靠后期各种补救太难了
zilaishuichina 2014-07-31
  • 打赏
  • 举报
回复
http://download.csdn.net/download/zhangxubingguoyan1/3673180 http://www.cppblog.com/kongque/archive/2011/03/07/141307.html 不知道这个对你有没有用
zilaishuichina 2014-07-31
  • 打赏
  • 举报
回复
引用 19 楼 huobaovs 的回复:
引用 18 楼 zilaishuichina 的回复:
[quote=引用 17 楼 huobaovs 的回复:] [quote=引用 13 楼 zilaishuichina 的回复:] google MiniDumpWriteDump
这个好像可行, xcode环境能用吗?
这是win api xcode 没用过 帮你搜了个连接 [/quote] 弄的我都不好意思了 我没有搜到相关的东西。。。。。 其实我还想问下android环境怎么办, 用eclipse 结合ndk开发的ios和android项目, [/quote] 没接触过手机开发
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 18 楼 zilaishuichina 的回复:
引用 17 楼 huobaovs 的回复:
[quote=引用 13 楼 zilaishuichina 的回复:] google MiniDumpWriteDump
这个好像可行, xcode环境能用吗?
这是win api xcode 没用过 帮你搜了个连接 [/quote] 弄的我都不好意思了 我没有搜到相关的东西。。。。。 其实我还想问下android环境怎么办, 用eclipse 结合ndk开发的ios和android项目,
zilaishuichina 2014-07-31
  • 打赏
  • 举报
回复
引用 17 楼 huobaovs 的回复:
引用 13 楼 zilaishuichina 的回复:
google MiniDumpWriteDump
这个好像可行, xcode环境能用吗?
这是win api xcode 没用过 帮你搜了个连接
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 13 楼 zilaishuichina 的回复:
google MiniDumpWriteDump
这个好像可行, xcode环境能用吗?
Saleayas 2014-07-31
  • 打赏
  • 举报
回复
虽然异常可以处理一些错误,但是。 很多人都希望用异常来捕获错误。这是不对的。 这个是 BUG,需要修正的。 想读取文件,如果文件不存在,那样的才叫异常。
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 14 楼 lovesmiles 的回复:
[quote=引用 12 楼 huobaovs 的回复:] [quote=引用 9 楼 lovesmiles 的回复:] [quote=引用 8 楼 huobaovs 的回复:] [quote=引用 7 楼 lovesmiles 的回复:] 崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
这就是我想要的 概念懂了, 具体怎么实现还是毫无头绪啊, 比如怎么获取地址 输出地址呢? 先不求计算行数 谢谢你的耐心[/quote] 没有办法,程序已经死掉了,只能让操作系统收拾场面了。linux的话会生成一个core文件,这个文件会保留出错时的地址。 应用程序是没有办法自己保存出错地址的。[/quote] 什么是程序已经死掉了哦? 应用还没有发布出去呢, 只是不知道怎么加这个东西, 从来没接触过这一块 [/quote] 晕倒,看来你只是想问一下在xcode下面怎么调试程序而已.....[/quote] 不是啊 你说的通过崩溃地址定位代码就是我要找的东西, 我是想实现收集用户在操作的时候发生的崩溃信息, 刚刚百度了一下,说什么用map什么什么的 完全看不懂
勤奋的小游侠 2014-07-31
  • 打赏
  • 举报
回复
引用 12 楼 huobaovs 的回复:
[quote=引用 9 楼 lovesmiles 的回复:] [quote=引用 8 楼 huobaovs 的回复:] [quote=引用 7 楼 lovesmiles 的回复:] 崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
这就是我想要的 概念懂了, 具体怎么实现还是毫无头绪啊, 比如怎么获取地址 输出地址呢? 先不求计算行数 谢谢你的耐心[/quote] 没有办法,程序已经死掉了,只能让操作系统收拾场面了。linux的话会生成一个core文件,这个文件会保留出错时的地址。 应用程序是没有办法自己保存出错地址的。[/quote] 什么是程序已经死掉了哦? 应用还没有发布出去呢, 只是不知道怎么加这个东西, 从来没接触过这一块 [/quote] 晕倒,看来你只是想问一下在xcode下面怎么调试程序而已.....
zilaishuichina 2014-07-31
  • 打赏
  • 举报
回复
google MiniDumpWriteDump
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 9 楼 lovesmiles 的回复:
[quote=引用 8 楼 huobaovs 的回复:] [quote=引用 7 楼 lovesmiles 的回复:] 崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
这就是我想要的 概念懂了, 具体怎么实现还是毫无头绪啊, 比如怎么获取地址 输出地址呢? 先不求计算行数 谢谢你的耐心[/quote] 没有办法,程序已经死掉了,只能让操作系统收拾场面了。linux的话会生成一个core文件,这个文件会保留出错时的地址。 应用程序是没有办法自己保存出错地址的。[/quote] 什么是程序已经死掉了哦? 应用还没有发布出去呢, 只是不知道怎么加这个东西, 从来没接触过这一块
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 10 楼 zhaowech 的回复:
说白了,你只是不懂调试而已,visual studio的调试方法,一般是F10单步,F11,步进,F5运行到下一断点 会了这个,菜鸟不需要catch异常的
被羞辱了, 不是要调试,而是要收集统计崩溃信息, 是想用户在操作的时候 发生的崩溃 然后将信息发给我们服务端
孤影品茗 2014-07-31
  • 打赏
  • 举报
回复
说白了,你只是不懂调试而已,visual studio的调试方法,一般是F10单步,F11,步进,F5运行到下一断点 会了这个,菜鸟不需要catch异常的
勤奋的小游侠 2014-07-31
  • 打赏
  • 举报
回复
引用 8 楼 huobaovs 的回复:
[quote=引用 7 楼 lovesmiles 的回复:] 崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
这就是我想要的 概念懂了, 具体怎么实现还是毫无头绪啊, 比如怎么获取地址 输出地址呢? 先不求计算行数 谢谢你的耐心[/quote] 没有办法,程序已经死掉了,只能让操作系统收拾场面了。linux的话会生成一个core文件,这个文件会保留出错时的地址。 应用程序是没有办法自己保存出错地址的。
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 7 楼 lovesmiles 的回复:
崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
这就是我想要的 概念懂了, 具体怎么实现还是毫无头绪啊, 比如怎么获取地址 输出地址呢? 先不求计算行数 谢谢你的耐心
勤奋的小游侠 2014-07-31
  • 打赏
  • 举报
回复
崩溃时一般会弹出0x0000xxx之类的地址,这个地址就是指令的地址。然后你再查看程序生成时的符号表,这个符号表会有每一个函数的起始地址,找到0x0000xxx比函数地址大的第一个函数,这个就是出错的函数。然后,再将两个地址相减,差就是出错代码相对于函数首地址的偏移值,就是函数中的第几行。 说得太多了,估计你也看不明白....
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 5 楼 lovesmiles 的回复:
[quote=引用 4 楼 huobaovs 的回复:] [quote=引用 2 楼 lisong694767315 的回复:] C++中异常处理是要自己写的。。。
这样啊, 如果一个项目有几百个类, 在当初开发的时候没有catch这些异常, 现在想要捕获 有什么好的可行方案么亲[/quote] 很直接地告诉你,没有!只能自己在调用时自己实现。 但是vector的实现对于访问越界之类的会抛出异常,只是要你自己catch来处理。[/quote] 谢谢你, 我想退一步解决 如果我只想知道程序崩溃的地点呢? 比如哪个类 那一行什么的 , 那些堆栈信息怎么获取哦
勤奋的小游侠 2014-07-31
  • 打赏
  • 举报
回复
引用 4 楼 huobaovs 的回复:
[quote=引用 2 楼 lisong694767315 的回复:] C++中异常处理是要自己写的。。。
这样啊, 如果一个项目有几百个类, 在当初开发的时候没有catch这些异常, 现在想要捕获 有什么好的可行方案么亲[/quote] 很直接地告诉你,没有!只能自己在调用时自己实现。 但是vector的实现对于访问越界之类的会抛出异常,只是要你自己catch来处理。
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 2 楼 lisong694767315 的回复:
C++中异常处理是要自己写的。。。
这样啊, 如果一个项目有几百个类, 在当初开发的时候没有catch这些异常, 现在想要捕获 有什么好的可行方案么亲
huobaovs 2014-07-31
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
vector<std::string>res;
std::string aa=res.front();
你这个代码都有明显的错误。访问了空值。对于这种错误没什么好的解决办法,只能自己编程避免。
这只是我的测试代码, 如果是对于vector的其他例如越界之类的错误 该如何捕获?
加载更多回复(2)

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧