草庐IT

c++ - 如何在事后 gdb session 中查找导致 SEGFAULT 的线程?

在我的应用程序中,我处理SIGSEG以生成回溯并调用abort()以生成核心转储。如果我现在对内核运行gdb-post-mortem分析,导致SEGFAULT的线程不再可见。有什么办法可以让我看到SEGFAULT的原因吗? 最佳答案 您可以使用命令threadapplyallbt或threadapplyallbtfull来获取所有线程的回溯。可能有用。顺便说一句,如果你摆脱你的处理程序,你的操作系统会创建一个核心文件吗? 关于c++-如何在事后gdbsession中查找导致SEGFAUL

c++ - 如何在事后 gdb session 中查找导致 SEGFAULT 的线程?

在我的应用程序中,我处理SIGSEG以生成回溯并调用abort()以生成核心转储。如果我现在对内核运行gdb-post-mortem分析,导致SEGFAULT的线程不再可见。有什么办法可以让我看到SEGFAULT的原因吗? 最佳答案 您可以使用命令threadapplyallbt或threadapplyallbtfull来获取所有线程的回溯。可能有用。顺便说一句,如果你摆脱你的处理程序,你的操作系统会创建一个核心文件吗? 关于c++-如何在事后gdbsession中查找导致SEGFAUL

python - 如何在事后调试时退出 ipdb?

我喜欢使用以下方法检查Python脚本中的错误:$python3-mpdbmy_script.py这让我进入一个pdb提示符,我可以从那里c继续执行,当它遇到错误时,我可以检查变量然后q退出脚本执行以返回我的shell。我对iPython调试器模块进行了同样的尝试,因为它更加丰富多彩:$python3-mipdbmy_script.py但是,检查完错误后,我无法退出调试器。使用qquit命令只是在重新执行脚本和事后分析模式之间不断切换:$python3-mipdbmy_script.pyipdb>cUncaughtexception.Enteringpostmortemdebuggin

python - 如何在事后调试时退出 ipdb?

我喜欢使用以下方法检查Python脚本中的错误:$python3-mpdbmy_script.py这让我进入一个pdb提示符,我可以从那里c继续执行,当它遇到错误时,我可以检查变量然后q退出脚本执行以返回我的shell。我对iPython调试器模块进行了同样的尝试,因为它更加丰富多彩:$python3-mipdbmy_script.py但是,检查完错误后,我无法退出调试器。使用qquit命令只是在重新执行脚本和事后分析模式之间不断切换:$python3-mipdbmy_script.pyipdb>cUncaughtexception.Enteringpostmortemdebuggin

iOS - 事后获取自进程开始时间

我正在为iOS应用程序编写一个插件包(我不会告诉你细节)。当我的包被加载时,这不一定是在主应用程序包加载时,我想以秒(或更高)的分辨率获得进程的“正常运行时间”。我知道在其他操作系统(Unix/Linux/Android)中我可以枚举kinfo_proc或使用/proc/self/stat方法,但我不是无法从iOS应用程序沙箱内部实现我的目标。我可以使用一些标准的系统调用/NSProcessInfo属性吗?这主要是为了调试,但它可能会变成一个功能。因此,符合AppStore资格的方法是首选,但不是强制性的。 最佳答案 可以使用[[N

windows - 符号服务器中没有确切版本的 Windows DLL 的事后崩溃转储调试

在我的应用程序中,每当我的应用程序崩溃时,我都会使用MiniDumpWriteDump函数(请参阅dbghelp.dll)写入故障转储文件。我还使用一个符号服务器来存储我所有的可执行文件和pdb文件,这样每当客户向我发送故障转储文件时,调试器就会自动选取正确版本的可执行文件和调试信息。我还将WindowsDLL(ntdll.dll、kernel32.dll等)及其调试信息存储在符号服务器中(使用SymChk)。调试信息取自微软的公共(public)符号服务器。大多数情况下这是完美的,除了以下情况:客户在其中一个WindowsDLL中崩溃并且客户使用了我没有放入符号服务器的DLL这是因为

python - Python 中的事后调试是否允许步进或继续?

我一直在进行事后调试,但遇到了一些问题。考虑以下名为example.py的python脚本:k=0print1./kprint'continue...'我可以用:>python-mpdbexample.py然后进入第2行print1./k然后设置k=1然后继续pdb命令c。现在,如果我通过事后调试来执行此操作,我将无法继续执行程序。我运行:>python-iexample.py然后在我进入shell之后我做了一个:importpdbpdb.pm()然后我可以像以前一样更改k的值,但我无法继续执行任何程序。Pdb只是简单地退出。我找不到任何地方明确指出您不能在事后分析中单步执行程序。看起

python - 在 pycharm/pydev 中调试 pytest 事后异常

我想将PyCharm的内置Pytest运行器与调试器一起使用,而无需预先配置断点。问题是Pytest捕获了我测试中的异常,因此PyCharm的事后调试器无法处理异常。我知道使用断点是可行的,但我不希望我的测试运行两次。在Unittest中找到了一种方法,我想知道Pytest中是否存在类似的东西。IsthereawaytocatchunittestexceptionswithPyCharm? 最佳答案 你在使用pytest-pycharm插入?看起来对我有用。创建虚拟环境,pipinstallpytestpytest-pycharm,

git - 在事后将 repo 标记为 github 中的 fork

我们有一个项目,主要是通过复制/粘贴方法fork出来的。但是repo协议(protocol)之间仍然存在很大的重叠。是否可以追溯性地将此分支标记为github的分支,以便比较和pull请求等功能将做正确的事情?注意:我尝试了下面的“hack”,重新fork、克隆fork、复制“fork”的内容,然后gitadd/commit/push。但是,原来“fork”中的文件历史丢失了,分支也没有过来。 最佳答案 因为您不想将您的提交“压缩”到一个文件中,您可以做的是:fork“原始”存储库创建pull请求从您的“复制和粘贴”存储库到fork

git - 事后从 git 存储库中删除二进制数据

我不小心将一些大的二进制数据提交到一些提交中。从那时起,我更新了我的.gitignore,那些文件不再被提交。但我想回到旧的提交并有选择地从存储库中删除这些数据,删除几个本应位于.gitignore中的目录。我不想自己删除提交。我将如何着手完成这项工作?我的首选方法是将.gitignore规则追溯应用到旧提交的某种方式...使用此方法的答案通常对其他人也非常有用,因为我确定我的问题不是唯一的。它也可以快速应用于通用解决方案,而无需针对每个用户的独特目录结构进行大量自定义。这可能吗,是我上面建议的简单方法,还是更复杂的方法? 最佳答案