问题:menu.ini修改后在cygwin下按~不能执行。menu.ini生成sysconf.img2,如果修改menu.ini后,主选单~后,照程序就会生成一个sysconf.img2.tmp文件。在linux环境打开的文件,也可以直接mv a b;而windows就不行,所以cygwin下~不能更新。
原因:因为windows的文件系统和unix的不一样。windows是不允许删除或者改名正打开的文件的。
解决的方法:是需要bbs关闭时手动删掉sysconf.img2,再把sysconf.img2.tmp改名为sysconf.img2。然后清共享内存后,重新进入bbs,menu.ini才会更新。
不止底线,这个地方总是有问题的,因为windows的文件系统和unix的不一样。你知道windows是不允许删除或者改名正打开的文件的。如果有底线就有问题,没有底线的话,有时~也不行,需要bbs关闭时手动删掉
如果menu.ini是正确的,然后你删了sysconf.img2,然后再登陆telnet第一个用户的时候,会根据menu.ini内容创建一个新的sysconf.img2,就像~的作用一样,并且这方法在cygwin里面没问题。现在你说用户登陆了就进入退出界面,就是sysconf.img2错误,那就说明menu.ini不对,因为每次可以新生成sysconf.img2的。另外注意/home/bbs/etc/目录下应该有sysconf.ini,此文件是安装bbs时生成的,不能删除。要不更新menu.ini时就会出错。
程序出错时,可以查看/home/bbs/deverrlog,就是错误记录。
动态底线的文件夹是/home/bbs/etc/endline,先移走etc/endline,~之后再移回来。
gdb跟踪过程:
先telnet上bbs,停在输入用户名那里。然后在gdb里面attach,然后c,然后在bbs里面输入用户名登陆。这样到了你刚才的断点就会停下来了。
shell>gdb src/bbs -p ***
gdb> tb main.c:304 <--------从此行开始,是用户登录的界面
gdb> c
telnet方式输入用户名和密码,断点停下来。
gdb> n
跟踪!!!