关于如何使用xsp服务器进行本地开发debugging的信息很多,只是来自官方mono网站的一个例子 :
我想在我的堆栈跟踪行号
默认情况下,xsp和xsp2以“释放”模式运行,这意味着在运行时不会生成debugging信息。 如果你想在你的堆栈跟踪中使用行号,你必须将–debug选项传递给Mono,这是通过调用xsp或xsp2和MONO_OPTIONS环境variables来完成的,如下所示:
$ MONO_OPTIONS=--debug xsp Listening on port: 8080 (non-secure) Listening on address: 0.0.0.0 Root directory: /tmp/us Hit Return to stop the server.
如果您使用Apache运行mod_mono,则必须在configuration文件中使用MonoDebug指令,如下所示:
MonoDebug true
在nginx上可能吗?
我刚刚遇到同样的问题,并能修复它:)
MONO_OPTIONS
环境变量可以包含传递给mono可执行文件的附加参数。 所以如果你这样做:
export MONO_OPTIONS="--debug" fastcgi-mono-server-4 /applications="/:/srv/www/htdocs/mywebapp" /socket=tcp:127.0.0.1:9000
你应该得到调试信息(linenumber和文件)错误,当然你也提供了保存调试信息的* .mdb文件。
我个人使用在这里找到的初始化脚本的修改版本,如下所示:
#!/bin/sh ### BEGIN INIT INFO # Provides: monoserve.sh # Required-Start: $local_fs $syslog $remote_fs # Required-Stop: $local_fs $syslog $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start fastcgi mono server with hosts ### END INIT INFO source /etc/mono-addon-env NAME=monoserver DESC=monoserver MONO_OPTIONS="--debug" MONOSERVER=$(which fastcgi-mono-server4) MONOSERVER_PID=$(ps auxf | grep fastcgi-mono-server4.exe | grep -v grep | awk '{print $2}') WEBAPPS="/:/srv/www/htdocs/mywebapp/" case "$1" in start) if [ -z "${MONOSERVER_PID}" ]; then echo "starting mono server" ${MONOSERVER} /applications=${WEBAPPS} /socket=tcp:127.0.0.1:9000 & echo "mono server started" else echo ${WEBAPPS} echo "mono server is running" fi ;; stop) if [ -n "${MONOSERVER_PID}" ]; then kill ${MONOSERVER_PID} echo "mono server stopped" else echo "mono server is not running" fi ;; esac exit 0
但是请注意 :如果你使用init脚本来启动fastcgi守护进程,不要使用像“service monoserve start”(RHEL / CentOS)或“rcMonoserve start”这样的初始化工具。 对我来说这是行不通的,我怀疑init系统会用不同的环境变量产生另一个进程。 为了安全起见,只能直接调用脚本,即/etc/init.d/monoserve启动并放入/etc/rc.local等。