我有一个.NET应用程序,我已经移植到.NET核心。 我正在Ubuntu 14.04上testing它。
我想弄清楚如何得到一个.dmp文件或当程序崩溃的Linux等价物。 我打电话给Environment.FailFast但据我所知,这不会像在Windows上生成.dmp文件一样。 根据这种情况 Environment.FailFast应该创build一个转储,但如果是我找不到它。
另外我已经尝试使用gcore手动创build转储。 这工作,但它需要很长时间来生成转储(我的应用程序不是那么大),我无法得到正确的调用堆栈在gdb之后,因为当我指向我的应用程序的DLL GDB不能识别它。
他在Linux上获得.NET Core应用程序的最佳方式是什么?
CefSharp不运行在Windows 7中
如何显示Windowslogin对话框?
DataGridView是绑定但不显示
LINQ程序集位于Windows XP中?
我如何(重新)从.net应用程序格式化分区?
谢谢!
如何在Mono中获得“友好”的串口名称并保持跨平台
.NET中的“开始/关联”等效
交易登记performance问题
如何确定当前的Windows会话是否被locking?
如何在Linux中获得.Net文件的AssemblyVersion
你想要一个核心转储,这是内置到操作系统。
第一个ulimit -Sc unlimited作为你想运行这个进程的用户,因此可以创建任意大小的核心文件。 然后kill -4 <pid>
这应该会产生核心转储。 它应该可能在进程运行的目录中。
如果您不能以应用程序运行的用户身份登录,则需要将其放入limits.conf中。
linux coredumps的生成由/proc/sys/kernel/core_pattern 。 如果某些信号(如SIGSEGV或SIGQUIT)导致进程终止,进程内存的映像基本上写入该文件。 如果它以管道符号|开头 ,它可以流入一个应用程序,进行转储分析。 这是记录在这里: http : //man7.org/linux/man-pages/man5/core.5.html
如果你这样配置: echo coredump > /proc/sys/kernel/core_pattern它会把一个名为coredump的文件写入当前目录。
如果你这样配置它: echo "/tmp/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern它会创建一个像/tmp/cores/core.bash.8539.drehbahn-mbp.1236975953这样的文件/tmp/cores/core.bash.8539.drehbahn-mbp.1236975953 (见https://sigquit.wordpress.com/2009/03/13/the-core-pattern/ )
正如别人建议,也设置ulimit -S -c unlimited以允许任何大小的coredumps。
这里是一个博客文章,展示了如何在Linux下创建和分析.NET核心coredumps: http : //blogs.microsoft.co.il/sasha/2017/02/26/analyzing-a-net-core-core-翻斗上的Linux /
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。