如何在所有平台上使用python脚本触发应用程序的核心转储?
我有一个python脚本,支持linux、windows和未来的mac OS。 我希望在python脚本中运行应用程序,然后从进程id触发一个核心转储 通过在linux平台上的python子流程中调用gcore,可以很容易地实现这一点。 如何在windows上执行此操作? 将来,我们还需要支持MacOSX 最好的方法是什么 可能使用python不是正确的方法 我们可以使用shell脚本在windows上安装cygwin。 windows上是否有任何gcore等价物? 或者我们应该改用.bat文件如何在所有平台上使用python脚本触发应用程序的核心转储?,python,linux,windows,dump,core,Python,Linux,Windows,Dump,Core,我有一个python脚本,支持linux、windows和未来的mac OS。 我希望在python脚本中运行应用程序,然后从进程id触发一个核心转储 通过在linux平台上的python子流程中调用gcore,可以很容易地实现这一点。 如何在windows上执行此操作? 将来,我们还需要支持MacOSX 最好的方法是什么 可能使用python不是正确的方法 我们可以使用shell脚本在windows上安装cygwin。 windows上是否有任何gcore等价物? 或者我们应该改用.bat文件
但如果可能的话,我希望在所有平台上都有一个通用脚本或python脚本,并且不希望维护不同的脚本。MS Windows上没有“核心转储”这样的东西。在任何平台上生成异常时,用零除都可以。您可以在Windows上使用随Windows 7+分发的dbghelp.dll库创建转储文件(对于XP,它位于SDK调试工具中)。您可以使用ctypes调用,例如从ctypes import*调用
代码>dbghelp=windell('dbghelp')
dbghelp.MiniDumpWriteDump(c\u void\u p(-1),os.getpid(),msvcrt.get\u osfhandle(dumpfile.fileno()),0,无,无)
。但这实际上应该从一个单独的看门狗过程中完成。转储文件可以加载到诸如WinDbg或cdb之类的调试器中,例如cdb-z core.dmp
。