求大神,如何定位无限递归调用

问题描述

服务器莫名报出ProcessisterminatedduetoStackOverflowException的错误,就这么一句,完全定位不到调用堆栈。百度了也没找到好的方法,有大神有此类经验么,好几万行的代码找递归的地方,真是急死个人

解决方案

解决方案二:
trace啊,完全可以定位到的啊
解决方案三:
可以部署一个debug版(而不是release版),让输出包括行号。在应用中捕获各种exception并记录到日志。关键还是要注意观察,并且在开发环境重现bug步骤。如果不能重现问题,懒得去费心思研究这个,只是浮皮潦草地说“偶尔出现”,通常就只能“等待下一次出现”了,最后很可能使得解决问题的速度比乌龟爬还慢。
解决方案四:
如果这个现象每天出现10次,但是确实找到bug的具体语句的速度“比乌龟爬还慢”,那么可以先看看你们的服务系统有没有“无状态”分层设计。对于99%的核心业务,是可以设计为“无状态”的。这样它就可以随时重启,而不影响业务应用。而仅有1%的需要独立出来的服务器部分才需要“单独”成为一个客户端接入(维持连接)服务,或者甚至只是客户端自动重连而无需服务端保持连接。如果做这样一点点改造,服务器端就可以随时重启,也可以有多台机器同时作为服务。这样如果你用台服务器,即使每天遇到问题而重启100次,客户端也可能“感觉不到”了。
解决方案五:
引用楼主w332981851的回复:

好几万行的代码找递归的地方,真是急死个人

只要大致准确地判断范围,再有足够的日志(比如说一个应用中有20个初日志),这种问题会立刻显现出来。比如说某操作平均1分钟才进行一次,每小时的日志量只有1k,当出现此类问题时,可能就变成了每秒50次操作,每秒增加10k的日志量。此时只要检测一下日志增加情况就知道“出大事儿了”。因此设计开发时选择一个好一点的日志机制也可以有很大帮助的。
解决方案六:
难道你代码里到处都是递归?递归出了问题就那么难查吗

时间: 2025-01-26 15:36:43

求大神,如何定位无限递归调用的相关文章

c# 4 0-c#求大神指教,关于递归排产线产品生产量的问题

问题描述 c#求大神指教,关于递归排产线产品生产量的问题 已知生产数量A,每日最大生产值B,客户需要产品到货时间 向数据库添加数据时候需要主意以下几点 1.生产完成时间尽量往后(既是距离到货时间前两天即可) 2.日最大产量不能大于每日最大生产值(200) 3.生产日期从当前时间开始往后排 4.日最大生产量必须要满足(既是每天必须生产200) eg:需要生产500个产品,日最大产值200,客户需要2014-12-20收到产品(客需要到货时间可以协调) 1.生产完成日:2014-12-17 开始生产

急求大神帮助!!C#调用C++dllSystem.AccessViolationException”类型的未经处理的异常出现在 mscorlib.dll 中。

问题描述 "System.AccessViolationException"类型的未经处理的异常出现在mscorlib.dll中.其他信息:尝试读取或写入受保护的内存.这通常指示其他内存已损坏.代码如下//////C++dll代码HWNDhWnd;extern"C"__declspec(dllexport)voidcOSG(HWNDmhWnd){hWnd=mhWnd;}extern"C"__declspec(dllexport)voidInitO

关于递归遍历文件夹的问题,求大神们指教。

问题描述 关于递归遍历文件夹的问题,求大神们指教. 递归遍历文件夹中的内容已经可以实现.但是有个问题不会解决.求大神们帮忙.比如说一个文件夹(一级目录)里面还有多个文件夹(二级目录),二级目录里面包含各种文件. 我想获取各个二级目录,以及二级目录里面的文件,该如何获取.求大神指点! 解决方案 不知道你是什么语言,说下思路吧:假设你获取文件夹内文件的方法叫search,传递参数为文件夹路径: 1传递根目录到search方法,遍历每个文件: 2判断每个文件是文件还是文件夹,是文件加入列表,是文件夹将

node js-Express node.js 如何访问一个域名 并返回数据求大神指教

问题描述 Express node.js 如何访问一个域名 并返回数据求大神指教 我是要去调用接口 (这个接口是别人写好了的 有自己的域名 我只要传参过去 接口就会返回json数据) 才刚学node.js 想想请教大神 给点思路 或者源代码

数据结构 递归与栈-求大神指导调用递归函数中的栈是怎么运行的

问题描述 求大神指导调用递归函数中的栈是怎么运行的 回溯法与树的遍历 回溯法:其求解过程实质是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的,而 是隐含在遍历过程中. 题目描述:求含n个元素的集合的幂集. 例:A={1,2,3},则A的幂集为{{1,2,3},{1,2},{1, 3},{2,3},{1},{2},{3},{}} 解题思路:求幂集的过程可看成是依次对集合A中的元素进行取或舍的过程. 选择合适的数据结构--假设以线性表表示集合. 树根结点表示幂集元素的初始

树形 递归-java 递归报错 求大神帮忙

问题描述 java 递归报错 求大神帮忙 private List<Post> getPostLower(List<Post> PostTops){ List<Post> postAll=new ArrayList<Post>(); // 上级 for(Post post:PostTops){ //查询到下级 List<Post> posts=basService.queryPostByParentId(post.getPostId()); //

求大神看看,C语言二叉树非递归遍历问题 ,最后输出正确,然后在程序崩溃

问题描述 求大神看看,C语言二叉树非递归遍历问题 ,最后输出正确,然后在程序崩溃 #include #include #include typedef struct TNode { char date; struct TNode *lchild,*rchild; }TNode,*BiTree; typedef struct { BiTree top; BiTree *base; int stacksize; }Stack; int createBiTree(BiTree &S){ char ch

大神,C++代码递归代码求详细注释,特别是if中的看不懂,谢谢了

问题描述 大神,C++代码递归代码求详细注释,特别是if中的看不懂,谢谢了 void foo(int x, int y) { if (x > 1000) return; if (x == y && x == 1) { printf("%d %d ", 1, 1); foo(x + y, x); return; } else { printf("%d ", x); foo(x + y, x); } } 解决方案 void foo(int x, i

ajax调用后台方法,求大神

问题描述 ajax调用后台方法,求大神 写了一段ajax的代码,原意是打算,当选择句子时,用ajax将选中的句子传回后台,当ajax回传成功时,执行后台方法BTCompare.但是现在页面加载的时候直接执行了BTCompare,反而点击按钮触发ajax的时候不执行 //选取句子,点击按钮,传送回后台 function ajaxSend() { $('#btnSend').attr('disabled' true) $.ajax({ type: ""Post"" ur