搜索
bottom↓
楼主: sunnydragon

【开源】ARM Cortex-M 错误追踪库,让 HardFault 不再可怕

  [复制链接]

出0入0汤圆

发表于 2017-4-20 13:18:05 | 显示全部楼层
非常不错的工具,谢谢楼主~

出0入0汤圆

发表于 2017-4-20 13:28:44 | 显示全部楼层
牛!试用下!

出0入0汤圆

发表于 2017-4-20 13:46:24 | 显示全部楼层
感谢楼主分享!

出0入0汤圆

发表于 2017-4-20 13:54:45 | 显示全部楼层
感谢牛人的分享

出0入0汤圆

发表于 2017-4-20 14:33:00 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2017-4-20 14:47:17 | 显示全部楼层
这个真的很不错。。

出0入0汤圆

发表于 2017-4-20 15:27:56 | 显示全部楼层
我也一直以为这种调测工具是官方出,果然高手在民间啊!

出0入0汤圆

发表于 2017-4-20 18:38:12 | 显示全部楼层
不错,以后用

出0入0汤圆

发表于 2017-4-20 18:38:34 | 显示全部楼层
操作系统还没rtx?

出0入0汤圆

发表于 2017-4-20 19:52:45 | 显示全部楼层
牛逼 支持开源精神

出0入0汤圆

发表于 2017-4-20 20:07:18 | 显示全部楼层
此乃神器啊,之前都是看寄存器,定位也不很准

出0入13汤圆

发表于 2017-4-20 20:14:42 来自手机 | 显示全部楼层
谢谢分享,又一个好的开源工具

出0入198汤圆

 楼主| 发表于 2017-4-20 21:05:58 | 显示全部楼层
sblpp 发表于 2017-4-19 21:32
感谢楼主,感谢楼主的老婆!

哈哈~多谢支持。。大家的支持,是我继续开源的动力。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:07:17 | 显示全部楼层
jiulong855@.163 发表于 2017-4-20 08:50
Handfault 确实是挺不好找原因的,下下来看看

欢迎试用,期待反馈体验哈。。

出0入0汤圆

发表于 2017-4-20 21:08:53 | 显示全部楼层
sunnydragon 发表于 2017-4-20 21:05
哈哈~多谢支持。。大家的支持,是我继续开源的动力。

到您的GitHub上看过,真的是好多很有价值的!非常非常感谢!

出0入0汤圆

发表于 2017-4-20 21:09:20 | 显示全部楼层
这个东西太有用了,辛苦LZ了

出0入198汤圆

 楼主| 发表于 2017-4-20 21:11:03 | 显示全部楼层
syj0925 发表于 2017-4-20 08:54
太需要这个功能了,每次硬件异常终端,要从LR寄存器去找在哪里挂掉的,但是往往看不出实际原因。 ...

欢迎试用体验~~

CmBacktrace 不仅能定位问题原因,关键还能还原问题现场,定位问题代码,确定错误代码调用关系。带 OS 的环境甚至还能知道异常线程的名称。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:13:31 | 显示全部楼层
tdh03z 发表于 2017-4-19 23:15
非常感谢啊,回头长时间使用下

试用完,欢迎反馈体验,多多与大家互动~~

出0入198汤圆

 楼主| 发表于 2017-4-20 21:19:05 | 显示全部楼层
security 发表于 2017-4-20 09:01
怎么说呢?
每一个成功男人的背后,总有那么一个默默支持的女人!楼主是幸福的。

多谢兄弟的支持~~

软件如果好用,期待做更多的交流分享。我会和大家一起努力,将软件做的更加实用、可靠。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:27:33 | 显示全部楼层
guolun 发表于 2017-4-20 09:18
我也碰到过几次hardfault,只会追踪LR或者PC,到此为止,更深入的不会了。好在解决了。 ...

早期咱们都一样。这种方法虽然简单,但是碰到复杂问题就熟手无策了。

用了 CmBacktrace 你就会发现,用真实的数据去定位问题,比盲目的猜测,排除法,定位问题会更加直接、准确。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:36:24 | 显示全部楼层
zack_cf 发表于 2017-4-20 09:52
下面这个错误不知道你的代码能不能定位出来。就是当用SDRAM作为栈空间,函数返回时执行到pop{Rx,Ry,PC}指令 ...

CmBacktrace 经过长时间测试,这类问题也遇到过的。

比如,你说的复现概率低,由于 CmBacktrace 与 EasyFlash 的记录功能可以关联,异常时直接将日志存入 Flash,异常的现场信息会被很全面的保存下来,不用担心丢掉任何一次异常日志。

即便有多个任务,问题代码还可能被不同函数调用,CmBacktrace 可以异常时可以输出任务名称,函数调用栈也会被输出,定位问题代码的调用逻辑也会非常直观。

当然说的这么多,还是希望你能用真实的例子实验下,CmBacktrace 里面有现成的 RTOS Demo,改改就出来了。然后贴出你的代码,大家在具体问题具体讨论。

出0入8汤圆

发表于 2017-4-20 21:44:10 来自手机 | 显示全部楼层
多谢。。。。。。。。。。。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:44:58 | 显示全部楼层
myxiaonia 发表于 2017-4-20 09:58
打算尝试一下,不过要是能够步骤简单一点就更牛了

操作方面,哪里是你觉得比较繁琐的?

RTT 的 Cortex-M3 CPU 支持简单的异常诊断,但是其他 Cortex-M 系列是没有的。

CmBacktrace 在我看来,最实用还是函数调用栈输出功能。说实话,出现 HardFault 我一般会先通过函数调用栈定位问题代码,简单分析下问题,大部分问题原因都能被找到。而异常的具体诊断原因,基本都是最后才看,平时也不会特别在意。

出0入0汤圆

发表于 2017-4-20 21:50:51 | 显示全部楼层
我也要求这个

出0入198汤圆

 楼主| 发表于 2017-4-20 21:53:21 | 显示全部楼层
yijiangshan 发表于 2017-4-20 10:25
太感谢了,建议申请精华帖,这个东西很有用的。楼主无私

多谢支持哈~~精华帖还真没有申请过。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:54:12 | 显示全部楼层
mii 发表于 2017-4-20 11:07
楼主厉害,前几次小项目遇到硬件中断也是生不如死,调试好久才解决。到时试试这个库
...

好啊~~到时候试用完,记得反馈体验哈。。

出0入198汤圆

 楼主| 发表于 2017-4-20 21:55:16 | 显示全部楼层
7nian 发表于 2017-4-20 12:19
楼主的几个项目都很牛,elog现在好在用。

多谢支持~~如果觉得软件好用,记得给身边的朋友多多推广哈~

出0入198汤圆

 楼主| 发表于 2017-4-20 21:57:29 | 显示全部楼层
chengying 发表于 2017-4-20 18:38
操作系统还没rtx?

RTX 没用过~~如果有时间,欢迎给 CmBacktrace 增加 RTX 支持哈。

出0入0汤圆

发表于 2017-4-20 21:58:36 来自手机 | 显示全部楼层
感谢分享,改天试试

出0入0汤圆

发表于 2017-4-20 22:33:40 | 显示全部楼层
:-),虽然不是很明白,但是大虾出手,一定mark,我就是一个mark党。

出0入0汤圆

发表于 2017-4-20 22:35:37 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2017-4-20 23:57:59 | 显示全部楼层
就佩服楼主这种钻研精神

出0入0汤圆

发表于 2017-4-21 00:23:41 | 显示全部楼层
这东西怎么用啊?

出130入0汤圆

发表于 2017-4-21 01:00:31 | 显示全部楼层
GOOD JOB...

出0入198汤圆

 楼主| 发表于 2017-4-21 07:55:54 | 显示全部楼层
powerlabor001 发表于 2017-4-20 22:33
:-),虽然不是很明白,但是大虾出手,一定mark,我就是一个mark党。

多谢支持,你可以按照 文档 试用下 Demo 大概就明白了

出0入0汤圆

发表于 2017-4-21 07:56:35 | 显示全部楼层
sunnydragon 发表于 2017-4-20 21:44
操作方面,哪里是你觉得比较繁琐的?

RTT 的 Cortex-M3 CPU 支持简单的异常诊断,但是其他 Cortex-M 系 ...

就是要用命令行工具反查比较麻烦点

出0入0汤圆

发表于 2017-4-21 08:19:08 来自手机 | 显示全部楼层
厉害了,我的哥

出0入0汤圆

发表于 2017-4-21 08:32:58 | 显示全部楼层
十分感谢分享开源啊

出0入0汤圆

发表于 2017-4-21 08:38:46 | 显示全部楼层
厉害呀,下下来试用一下,谢谢。

出0入0汤圆

发表于 2017-4-21 08:47:29 | 显示全部楼层
谢谢,太棒了

出0入0汤圆

发表于 2017-4-21 08:52:54 | 显示全部楼层
好东西啊

出0入0汤圆

发表于 2017-4-21 09:11:47 | 显示全部楼层
不错,不过OS 点开里面 马上就来 什么意思?

出0入0汤圆

发表于 2017-4-21 09:24:14 | 显示全部楼层
太牛了~支持~~

出0入0汤圆

发表于 2017-4-21 09:33:34 | 显示全部楼层
精品,必须深入学习

出0入0汤圆

发表于 2017-4-21 09:58:49 | 显示全部楼层
反馈信息大多没有价值,只能自己上了,自己试过之后再来发言

出0入0汤圆

发表于 2017-4-21 09:59:33 | 显示全部楼层
我移植了无操作系统的到我的工程中,体验了一下。有个不明白的地方,“函数调用栈输出”是做什么用的,一直没明白,谁可以详细解释一下,谢谢了

出0入0汤圆

发表于 2017-4-21 10:27:45 | 显示全部楼层
了不起!

出0入8汤圆

发表于 2017-4-21 10:33:19 | 显示全部楼层
syj0925 发表于 2017-4-21 09:59
我移植了无操作系统的到我的工程中,体验了一下。有个不明白的地方,“函数调用栈输出”是做什么用的,一直 ...

就是函数的调用顺序关系图。
让你知道,你之前的行走路径,究竟是怎么一步步走到坑里去的。

出0入8汤圆

发表于 2017-4-21 10:41:05 | 显示全部楼层
我额外说一点用户体验的问题:

关于那个 Demo 的 GIF 图,
我觉得另外搞一个分步骤的静态图,这样比较好:想看哪一步就看哪一步,想看多久就看多久,想怎么回看就怎么回看。
而不用,这一张早已看明白了,下一张迟迟不来,又或者,这一张老看不明白,怎么就给跳到下一张了,要回看,又得等一轮回...,GIF 调快调慢,对于新手,都是用户体验不良的。

因此,最佳的方案是:提供分步骤的静态图,再来一张速度正常的 GIF 全景图。

出0入0汤圆

发表于 2017-4-21 10:52:53 | 显示全部楼层
security 发表于 2017-4-21 10:33
就是函数的调用顺序关系图。
让你知道,你之前的行走路径,究竟是怎么一步步走到坑里去的。 ...

明白了,谢谢答疑

出0入0汤圆

发表于 2017-4-21 11:47:48 | 显示全部楼层
厉害了,赞一个楼主。。。Hard Fault习惯了找内存溢出

出0入0汤圆

发表于 2017-4-21 12:45:41 | 显示全部楼层
这个ARM Cortex-M 错误追踪库太牛掰了!感谢楼主分享!

出0入0汤圆

发表于 2017-4-21 13:27:18 | 显示全部楼层
这么好的开源 必须顶

出0入0汤圆

发表于 2017-4-21 13:31:06 | 显示全部楼层
额,之前看国外书籍的序言,都是先感谢老婆的,什么因为写书没时间陪她,导致内心孤独什么的...国内的还真没见过这么的.

出0入0汤圆

发表于 2017-4-21 16:24:41 | 显示全部楼层
ARM神器!感谢楼主

出190入0汤圆

发表于 2017-4-21 16:26:17 来自手机 | 显示全部楼层
楼主辛苦了

出5入42汤圆

发表于 2017-4-21 16:31:56 | 显示全部楼层
CmBacktrace: ARM Cortex-M 系列 MCU 错误追踪库

厉害了

出0入0汤圆

发表于 2017-4-21 17:29:58 | 显示全部楼层
牛逼,收藏下

出0入0汤圆

发表于 2017-4-21 17:30:11 | 显示全部楼层
感谢楼主的分享,这几天还在调试遇到类似的问题,好在可以接jlink找出来
收藏

出0入0汤圆

发表于 2017-4-21 17:44:46 | 显示全部楼层
markmarkmark

出0入8汤圆

发表于 2017-4-21 18:06:46 | 显示全部楼层
大师的东西必须支持下!!

出0入0汤圆

发表于 2017-4-21 20:31:41 | 显示全部楼层
厉害,厉害,赶紧收藏,试试

出0入0汤圆

发表于 2017-4-21 20:49:31 | 显示全部楼层
谢谢楼主的无私奉献,开源了这么好的东西。

出0入0汤圆

发表于 2017-4-21 20:54:15 | 显示全部楼层
"hard falut" 啊,曾经被你伤了多少个日夜

出0入0汤圆

发表于 2017-4-21 21:03:43 | 显示全部楼层
谢谢楼主 我会帮你测试的 有什么问题在这和你反馈

出0入0汤圆

发表于 2017-4-21 21:13:13 | 显示全部楼层
好功夫,谢谢lz

出0入0汤圆

发表于 2017-4-21 23:08:08 | 显示全部楼层
我是win7 32位系统,运行addr2line.exe,会提示“该版本的 J:\Software design\Smart lamp\doc\CmBacktrace-master\tools\addr2line.ex
e 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86 (32 位
)或 x64 (64 位)版本的程序,然后联系软件发布者。”有没有兼容32位的addr2line.exe的呢?

出0入0汤圆

发表于 2017-4-22 00:30:46 | 显示全部楼层
支持,谢谢分享

出140入8汤圆

发表于 2017-4-22 07:05:41 | 显示全部楼层
把一个一般人做不了的东西自己做了,并且还开源,实在难得

出0入198汤圆

 楼主| 发表于 2017-4-22 08:19:31 | 显示全部楼层

开源的成果离不开大家每个人的努力。

期待大家多去尝试开源软件,给开发者反馈更多的建议和意见。

开发者才能把软件做的更好,软件更稳定、更实用后,才能吸引更多人来用,来一起加入到开源队伍中来。

最终技术分享没有障碍,大家都能在分享的技术中受益。

出0入198汤圆

 楼主| 发表于 2017-4-22 08:21:30 | 显示全部楼层
bg6agf 发表于 2017-4-21 00:23
这东西怎么用啊?

先认真看下首页说明文档,具体那个地方不明白,再来跟帖反馈。

出0入198汤圆

 楼主| 发表于 2017-4-22 08:47:06 | 显示全部楼层
myxiaonia 发表于 2017-4-21 07:56
就是要用命令行工具反查比较麻烦点

嗯,这个问题我也觉得麻烦,现在看来好像没有更好的解决方法。

出0入198汤圆

 楼主| 发表于 2017-4-22 08:47:46 | 显示全部楼层
rootxie 发表于 2017-4-21 09:11
不错,不过OS 点开里面 马上就来 什么意思?

FreeRTOS 是有规划要支持的,现在还没有做。

出0入198汤圆

 楼主| 发表于 2017-4-22 08:48:30 | 显示全部楼层
wazhiyi 发表于 2017-4-21 09:58
反馈信息大多没有价值,只能自己上了,自己试过之后再来发言

期待你的反馈哈~

出0入198汤圆

 楼主| 发表于 2017-4-22 08:53:41 | 显示全部楼层
security 发表于 2017-4-21 10:41
我额外说一点用户体验的问题:

关于那个 Demo 的 GIF 图,

言之有理,GIF 这块确实也是我头痛的地方,Markdown 不支持在线视频,否则我还想用视频方式也会好操控些。

晚些时候我就来完善下。

出0入198汤圆

 楼主| 发表于 2017-4-22 08:58:27 | 显示全部楼层
syj0925 发表于 2017-4-21 23:08
我是win7 32位系统,运行addr2line.exe,会提示“该版本的 J:\Software design\Smart lamp\doc\CmBacktrace ...

https://github.com/armink/CmBack ... e_for_call_stack.md

参考这个里面的 如何获得 addr2line 章节,下载32位版本的 MingW 即可

出0入0汤圆

发表于 2017-4-22 09:33:41 | 显示全部楼层
sunnydragon 发表于 2017-4-22 08:58
https://github.com/armink/CmBacktrace/blob/master/docs/zh/how_to_use_addr2line_for_call_stack.md

...

非常感谢,已经搞定了

出0入0汤圆

发表于 2017-4-22 09:35:53 | 显示全部楼层
移植到ucosII、stm32f407,mdk 5.14版本,编译出现如下警告,应该不影响使用吧
.\out\myapp.axf: Warning: L6330W: Undefined symbol STACK$$Base (referred from cm_backtrace.o). Unused section has been removed.
.\out\myapp.axf: Warning: L6330W: Undefined symbol STACK$$Limit (referred from cm_backtrace.o). Unused section has been removed.

出0入198汤圆

 楼主| 发表于 2017-4-22 09:59:47 | 显示全部楼层
syj0925 发表于 2017-4-22 09:35
移植到ucosII、stm32f407,mdk 5.14版本,编译出现如下警告,应该不影响使用吧
.\out\myapp.axf: Warning:  ...

我估计不行,这个编译警告会导致 CmBacktrace 找不到 C 的堆栈。

建议先不要移植,直接下载体验下 Demo ,等熟悉后再去移植,到时有问题再跟帖。

出0入0汤圆

发表于 2017-4-22 10:30:10 | 显示全部楼层
先赞一下对技术的执著、开源的精神!以及,工整的态度。

出0入25汤圆

发表于 2017-4-22 22:57:36 | 显示全部楼层
本帖最后由 XIVN1987 于 2017-4-23 01:51 编辑

大侠,你是怎么确定函数有几层调用的??
我看了下代码好像是下面这段代码实现的,,就是遍历整个栈空间,如果栈位置的数值当作地址在程序地址空间内就认为是一层调用,,但是如果压栈的其他内容也恰好在这个范围不就误认为是一层函数调用了吗??
栈中除了栈帧外还有函数压入栈内的其他数据,,必须得能判断出每层调用当前位置函数压入栈的数据的个数才能定位栈帧的位置,,知道栈帧的位置才能正确读出每层调用的PC、LR等寄存器值
或者我还没看懂大侠的代码,,望大侠指点一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入17汤圆

发表于 2017-4-22 23:28:09 | 显示全部楼层
楼主的确是厉害!赞一个

出0入0汤圆

发表于 2017-4-23 00:48:26 | 显示全部楼层
这个思路厉害啊,输出错误的时候的堆栈指针信息然后结合afx离线分析!我看到标题的时候还在想到底怎么做到在单片机内直接输出调用栈呢……

出0入0汤圆

发表于 2017-4-23 13:14:58 来自手机 | 显示全部楼层
厉害,赶紧收藏

出0入198汤圆

 楼主| 发表于 2017-4-23 13:17:31 | 显示全部楼层
XIVN1987 发表于 2017-4-22 22:57
大侠,你是怎么确定函数有几层调用的??
我看了下代码好像是下面这段代码实现的,,就是遍历整个栈空间, ...

是的,现在就是按照这个思路完成,这个思路比较简单粗暴,所以确实会存在脏数据。

但是就目前这么长时间使用情况来看,脏数据基本不会影响故障诊断。

出0入25汤圆

发表于 2017-4-23 14:09:16 | 显示全部楼层
sunnydragon 发表于 2017-4-23 13:17
是的,现在就是按照这个思路完成,这个思路比较简单粗暴,所以确实会存在脏数据。

但是就目前这么长时间 ...


多谢解疑!!

应该是因为STM32的程序地址在0x8000000,数值比较特殊,程序里面的数据不容易碰上,,不过对于其他程序地址从0x0000000开始的单片机这个方法就失效了

出0入0汤圆

发表于 2017-4-23 14:15:01 | 显示全部楼层
工具不错,感谢分享

出0入198汤圆

 楼主| 发表于 2017-4-23 16:39:43 | 显示全部楼层
XIVN1987 发表于 2017-4-23 14:09
多谢解疑!!

应该是因为STM32的程序地址在0x8000000,数值比较特殊,程序里面的数据不容易碰上,,不 ...

恩,也有个范围的,不能超过固件的结束地址。

还有没有其他更好的思路呢?

出0入25汤圆

发表于 2017-4-23 18:38:11 | 显示全部楼层
sunnydragon 发表于 2017-4-23 16:39
恩,也有个范围的,不能超过固件的结束地址。

还有没有其他更好的思路呢? ...


没有想到好的方法,感觉单片机上分析函数调用层次是不可能的

举个最极端的例子:有3层函数调用,每层函数调用的函数体内除了调用一个函数外什么都不做,,即:
  1. void a(void)
  2. {
  3.        
  4. }

  5. void b(void)
  6. {
  7.         a();
  8. }

  9. void c(void)
  10. {
  11.         b();
  12. }

  13. void main()
  14. {
  15.         c();
  16. }
复制代码


那么当函数a执行的时候,栈中只有两个LR寄存器的值,为函数c和函数b的返回地址,,就两个32位数,根本没法判断它是计算中间结果还是函数返回地址,,完全不可分析

唯一靠谱点儿的就是返回地址本身值比较特殊,比如STM32中函数地址都是0x08000000 到 0x08000000+程序大小 这个区间上的,,中间计算结果不容易碰上这样的值,,这也就是你现在用的方法

而对于其他程序地址从0x00000000开始的单片机(绝大多数Cortex-M单片机属于这种情况),那就完全不可分析了,,你不可能知道0x00001001到底是个数还是个程序地址

出0入0汤圆

发表于 2017-4-23 18:40:17 | 显示全部楼层
多谢分享~~~

出0入0汤圆

发表于 2017-4-23 18:43:49 | 显示全部楼层
不错,支持下楼主,还有楼主老婆

出0入0汤圆

发表于 2017-4-23 20:48:17 | 显示全部楼层
好东西!收藏了!

出0入0汤圆

发表于 2017-4-23 22:16:20 | 显示全部楼层

厉害了,
好东西,楼主牛人

出0入0汤圆

发表于 2017-4-24 11:08:53 | 显示全部楼层
这个实在太实用了,谢谢楼主的分享

出0入0汤圆

发表于 2017-4-25 13:08:27 | 显示全部楼层
感谢大牛分享,关注下,虽然不经常触发hardfault

出0入0汤圆

发表于 2017-4-25 15:54:46 | 显示全部楼层
感谢牛人的分享

出0入0汤圆

发表于 2017-4-25 16:17:35 | 显示全部楼层
感谢楼主,随便问一下FreeRTOS Demo什么时候出啊

出0入0汤圆

发表于 2017-4-25 16:56:36 | 显示全部楼层
牛逼!这个调试起来太有用了!

出0入198汤圆

 楼主| 发表于 2017-4-25 20:30:51 | 显示全部楼层
LiuYH 发表于 2017-4-25 16:17
感谢楼主,随便问一下FreeRTOS Demo什么时候出啊

FreeRTOS 可能还要修改系统源码才能支持,所以得晚些时候了

出0入0汤圆

发表于 2017-4-26 12:35:39 | 显示全部楼层
这工具不错,感谢分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 22:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表