是否有人碰到过ntdll.dll错误,导致vb编写的应用程序错误的问题?

fangyc 2007-12-04 03:39:22
我编写的一个应用程序是一个服务器和控制台通讯的网络程序。现在发现服务器经常会有意外自动关闭的情况。我在xp上曾经,碰到过会出现一个系统的对话框说的是netdll.dll出错,导致了崩溃。而在2003服务器上今又出现了意外的自动关闭了,而没有任何的提示,只能在windows系统日志中看到是有关netdll.dll出错。我相信是同一个问题。
我的服务器和客户端是通过winsock来通讯的。
现在这个自动关闭的情况我自己的xp系统上使用了5天,只发生过一次错误(但是连接的客户端数量不多只有5,6个)。而在2003上测试,连接的客户端很多有40,50个,现在1个早上发生过3次自动关闭。
请问各位是否有什么方法可以进行调试,或者有碰到过此类问题的高手请执教,多谢!
...全文
375 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangyc 2007-12-07
  • 打赏
  • 举报
回复
我是设置了 drwtsn32,呵呵,不过我那个程序就是不声不响的就没了,奇怪吧!
一点出错迹象都没有的,叮,一下就没了。所以自然也不会打印dmp文件了。
我好像调出来那个错误了,和doevents有关系。
真是 ~_~'
谢谢各位了散分!
大熊猫侯佩 2007-12-07
  • 打赏
  • 举报
回复
出错信息?
bordel 2007-12-07
  • 打赏
  • 举报
回复
drwtsn32不需要调用,把它设置成系统默认的调试器,这样当程序crash的时候,它就会自动地dump下来这个程序的环境。使用drwtsn32 -i把它设置成默认的调试器。dump下来的文件应该在documents and settings\<user>\application data下面吧,记不清了。你查找*.dmp文件就可以找到。:D但是使用这个dump文件要求你必须会熟练使用windbg。
不过使用它可以快速找到你的出错位置。
VirtualDesktop 2007-12-06
  • 打赏
  • 举报
回复
在socket处理的过程里面有没使用别的api或者什么的
我估计应该是个逻辑调用错误,你可能传给了api一些不符合要求的参数之类的
bordel 2007-12-05
  • 打赏
  • 举报
回复
其实这些动态库中的函数都是链接到ntdll中的。所以这里出问题。有可能是你调用出现问题了。另外,你的服务器是没有使用多线程,但是我说的是COM中有可能使用了多线程。这不是你上层的代码可以控制的。
至于怎么dump下来,你在网上搜索一下drwtsn32, 有很多设置它的方法。设置好以后,crash的时候它会自动把文件dump下来。再使用windbg打开,就可以查看函数调用栈了。有了stack trace,你就可以知道究竟是从你的哪个函数中出了问题。
fangyc 2007-12-05
  • 打赏
  • 举报
回复
非常谢谢bordel ,不过我调用了 drwtsn32 还是没有用。结果发现我的那个进程会不声不响的就自动关闭了。真是拿他没想法了。请问还有何好的方法?
fangyc 2007-12-04
  • 打赏
  • 举报
回复
有调用别的api函数的。但是不是从 lib "netdll.dll"中调用的,有“kernel32”,“user32”,“gdi32”,“advapi32.dll”等多个其他的api。
只是现在的应用程序一个崩溃掉,不知道如何去调试这个问题。而且这个问题似乎服务器要重现这样的错误还比较难,真是有点伤脑子的!
VirtualDesktop 2007-12-04
  • 打赏
  • 举报
回复
你的服务器除了使用winsock有没直接调用别的api?
ntdll.dll其实是一个中间层,它负责把我们使用的api调用转换成NT本身的api
这个文件出错的原因有很多的
fangyc 2007-12-04
  • 打赏
  • 举报
回复
请问如何在程序crash的时候,把问题dump下来,请bordel指教!
还有我的vb服务器程序不是多线程的。
bordel 2007-12-04
  • 打赏
  • 举报
回复
看起来非常象是你使用COM发生了Crash。而且这样的crash又很象COM中的多线程竞争的问题。
你最好在crash的时候,把问题dump下,再使用windbg调试。

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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