莫名奇妙的调试怪事

RLib 2011-06-28 01:09:50
真的是莫名奇妙...

调试模式运行的话,总会出错在一个函数上,写入冲突...

如果在那一个函数上下断或者单步执行的话,却一切正常...

各位高手,如此这般让人情何以堪啊?
...全文
183 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-06-29
  • 打赏
  • 举报
回复
出错时恰好垃圾回收?或者碰到内存碎片?多线程还可能是竞争访问资源未加锁。
RLib 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zhao4zhong1 的回复:]
出错时恰好垃圾回收?或者碰到内存碎片?多线程还可能是竞争访问资源未加锁。
[/Quote]

谢谢答复,应该是溢出了。

而这一溢出,内存池就乱套了,主要是没处理好string的内存分配。
RLib 2011-06-28
  • 打赏
  • 举报
回复
问题解决。

对内存池和string进行了重构。

至于时而正常、时而错误的情况,至今不明。

如果您有答案,请告诉我,谢谢。
孤舟 2011-06-28
  • 打赏
  • 举报
回复
我直接运行 不用单步也正常
RLib 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jgyh1987 的回复:]
应该错误在 memcpy_inline里面 我自己实现了个 memcpy_inline
换上 直接运行 很正常
[/Quote]

那是库函数memcpy.

运行当然正常啊,我说了单步步过是正常的哦
孤舟 2011-06-28
  • 打赏
  • 举报
回复
应该错误在 memcpy_inline里面 我自己实现了个 memcpy_inline
换上 直接运行 很正常
孤舟 2011-06-28
  • 打赏
  • 举报
回复
memcpy_inline

也是你自己写的 ?未找到这个函数
赵4老师 2011-06-28
  • 打赏
  • 举报
回复
错误出现的概率和速度快慢相关。
RLib 2011-06-28
  • 打赏
  • 举报
回复

void Memory::memcpy(Object dest, Object source, size_t dwsize)
{
if (dwsize < 64)
{
goto next;//小于64字节直接调用库函数拷贝
}
register int byte_copy = (dwsize /64) * 64;//取64的整数倍
__asm//拷贝byte_copy个字节
{
mov esi, source
mov edi, dest
mov ecx, byte_copy
shr ecx, 6
mainloop:
movq mm0, [esi]
movq mm1, 8[esi]
movq mm2, 16[esi]
movq mm3, 24[esi]
movq mm4, 32[esi]
movq mm5, 40[esi]
movq mm6, 48[esi]
movq mm7, 56[esi]
movntq [edi], mm0
movntq 8[edi], mm1
movntq 16[edi], mm2
movntq 24[edi], mm3
movntq 32[edi], mm4
movntq 40[edi], mm5
movntq 48[edi], mm6
movntq 56[edi], mm7
add esi, 64
add edi, 64
dec ecx
jnz mainloop
sfence ; flush write buffer
emms
}
dwsize -= byte_copy;//剩下没有拷贝的不足64的字节数
if (dwsize == 0)//刚好满足64倍数,说明拷贝完了。
{
goto nothing;
}
dest = (char *)dest + byte_copy;
source = (char *)source + byte_copy;
next:
memcpy_inline((char *)dest, (char *)source, dwsize);
nothing:
return;
}


这段代码,有没有逻辑上的错误?如溢出了。。。。

汇编那段可以无视。错在memcpy_inline((char *)dest, (char *)source, dwsize);这句
ouyh12345 2011-06-28
  • 打赏
  • 举报
回复
在代码附近加输出语句,看看变量的值
RLib 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 q191201771 的回复:]
rebuild
[/Quote]

没有用.试过了.
就想叫yoko 2011-06-28
  • 打赏
  • 举报
回复
rebuild
RLib 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zmlovelx 的回复:]
就算是优化的原因,也不该如此呀 断点位置是否正确?
[/Quote]

Debug禁用了所有优化的.


代码等下再贴吧,太长.

大家觉得可能错在哪里?
至善者善之敌 2011-06-28
  • 打赏
  • 举报
回复
放代码吧
帅得不敢出门 2011-06-28
  • 打赏
  • 举报
回复
就算是优化的原因,也不该如此呀 断点位置是否正确?
luciferisnotsatan 2011-06-28
  • 打赏
  • 举报
回复
代码贴出来
RLib 2011-06-28
  • 打赏
  • 举报
回复
总之它自己调试运行就会出错,手动来的话就正常.
RLib 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 q191201771 的回复:]
多线程么?
[/Quote]

这才叫人纠结啊,是单线程的.

如果插入跟踪点,也正常...
就想叫yoko 2011-06-28
  • 打赏
  • 举报
回复
多线程么?
内容概要:本文档系统整合了基于MATLAB/Simulink的风力涡轮机雷达信号仿真、电力系统优化、新能源调控及多领域智能算法应用资源,涵盖风电功率平抑、混合储能协同调频、综合能源系统调度、无人机三维路径规划、电动汽车参与调度、电氢氨耦合系统优化等前沿科研方向。资源包提供大量可复现的Matlab代码、Simulink仿真模型、数据集及配套论文,涉及GWO、PSO、WOA、HHO等多种智能优化算法,以及LSTM、CNN、GRU等深度学习模型在负荷预测、故障诊断、信号处理中的应用,尤其聚焦于风电与雷达信号交互、储能功率分配、虚拟电厂运行、微电网多时间尺度优化等关键技术的仿真实现。; 适合人群:具备一定MATLAB编程基础,从事电力系统、新能源、智能优化、信号处理、雷达仿真、综合能源管理等相关领域的科研人员及研究生;工作1-3年相关方向的工程师。; 使用场景及目标:①开展风力发电系统与雷达信号交互仿真研究;②复现高水平期刊论文中的优化调度、故障诊断、功率预测模型;③进行无人机路径规划、储能系统设计、综合能源系统优化等课题研究与论文撰写;④借助成熟的代码框架快速搭建仿真模型,提升科研效率与工程实践能力。; 阅读建议:建议按主题分类浏览资源列表,优先选择标注“复现”“顶刊”“EI”等高价值项目,结合提供的网盘链接下载完整代码与数据,配合Simulink仿真模型与说明文档进行调试与二次开发,注重算法实现与实际工程问题的深度融合。
日常处理文本内容时,你是否也常常被这些琐碎又烦人的操作消耗大量时间:从网页复制来的文章满是空行和多余空格,要一段段手动清理;从不同渠道收集的文档繁简混杂,格式五花八门,想统一规范却只能逐篇调整;面对数千行的数据,想按行排序、去重、添加行号,却找不到一个趁手的小工具;更别提Base64编解码、URL转义这些开发中高频使用的操作,每次都得打开在线网站反复折腾——这些看似零散的文本处理需求,单独去搜工具费时费力,用Word又杀鸡用牛刀,始终缺少一款能把这些功能聚合在一起、打开即用的桌面工具。而 大飞哥软件自习室——文本批量整理工具 v2.0正是为整合这些高频文本处理需求而生的专业效率工具,它集文件管理、文本清洗、格式转换、查找替换、批量插入、排序打乱、编码解码、实时统计等近三十项实用功能于一身,采用多标签页设计支持同时编辑多个文档,所有操作均支持撤销与重做,让你在写代码、整理素材、编辑文案时再也不用东拼西凑找工具,一个软件搞定全部文本处理需求。 软件的核心功能模块围绕文本处理的完整工作流展开,覆盖了从“粗加工”到“精处理”的各个环节。文本清洗模块提供了行首尾去空格、清除所有空格、删除空行、合并多余空格、去除重复行、清除HTML标签等六项功能,一键将脏乱差的原始文本快速规整为干净可用的素材。文本转换模块则涵盖了繁简互转、标点中英文互转、全半角互转、全部大写/小写/首字母大写等选项,尤其适合需要批量处理多语言或不同格式规范的文本内容。查找替换模块不仅支持普通文本替换,更提供了正则表达式和区分大小写选项,查找、替换、全部替换、选区替换四种模式灵活应对不同场景。批量插入文本模块更是独树一帜——用户可预设两组插入内容,选择插入到当前段首/段尾或所有段首/段尾,四个单选按钮搭配两个输入框,实现八种插入组合,为批量处理结构化文本提供了极大的便利。

65,210

社区成员

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

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