我通过mono-runtime
安装apt
,以便通过SSH在Ubuntu上运行我的Mono控制台应用程序。但是,当我运行命令mono myapp.exe
时,它退出,没有消息,我的程序什么都不做。
如果我将-v
开关抛向Mono,例如mono -v myapp.exe
,我会得到大约10k行输出(正如预期的那样,-v
是详细的),前几行是:
converting method System.OutOfMemoryException:.ctor (string)
Method System.OutOfMemoryException:.ctor (string) emitted at 0xb7052c28 to 0xb7052c4b (code length 35) [myapp.exe]
converting method (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr)
Method (wrapper runtime-invoke) <Module>:runtime_invoke_void__this___object (object,intptr,intptr,intptr) emitted at 0xb7052c68 to 0xb7052cf6 (code length 142) [myapp.exe]
converting method System.SystemException:.ctor (string)
我将此视为运行时抛出OutOfMemory
异常,但机器没有负载,有足够的可用RAM,并且没有运行任何其他系统进程。
我已经无数次删除并重新安装了Mono,甚至可以在其他机器上运行可执行文件。
我错过了一些完全明显的东西吗?
编辑:
Per @ lupus的答案,这里是log4net内部事件的转储。我没有看到任何错误:
log4net: log4net assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]. Loaded from [/mnt/ebs/911dispatch/scrapers/WA/Seattle/log4net.dll]. (.NET Runtime [4.0.30319.1] on Unix 3.0.0.12)
log4net: defaultRepositoryType [log4net.Repository.Hierarchy.Hierarchy]
log4net: Creating repository for assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [/mnt/ebs/911dispatch/scrapers/WA/Seattle/Seattle911.Backend.Scraper.exe]
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified.
log4net: Assembly [Seattle911.Backend.Scraper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Creating repository [log4net-default-repository] using type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Creating repository for assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] Loaded From [/mnt/ebs/911dispatch/scrapers/WA/Seattle/Seattle911.DAL.dll]
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] does not have a RepositoryAttribute specified.
log4net: Assembly [Seattle911.DAL, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null] using repository [log4net-default-repository] and repository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy]log4net: Shutdown called on Hierarchy [log4net-default-repository]
答案 0 :(得分:2)
在初始化Mono运行时时,您看到的OutOfMemoryException
总是。
为什么?因为如果(以及何时)需要OutOfMemoryException
实例,那么尝试分配一个实例是不错的时间:-)
IOW这是完全正常的,因为它只是缓存以便在以后需要时使用。遗憾的是,这意味着您的真正的错误发生在其他地方。
答案 1 :(得分:1)
您正在使用一个日志框架,它会在致命错误上调用Environment.Exit(这似乎是对postgres数据库的连接错误,可能是错误的地址/端口或配置错误的服务器?)。
您应该将log4net配置为不执行此操作或检查日志的位置以确定应用程序遇到的确切错误并进行更正。