如何调试Trace / BPT陷阱:5?


7

我得到了 Trace/BPT trap: 5 使用open命令时出错:

$ open -a Emacs
Trace/BPT trap: 5
$ open -a Safari 
Trace/BPT trap: 5
$ open -a TextEdit
Trace/BPT trap: 5

有什么建议我可以缩小造成这种情况的原因吗?

我从我之前的问题中了解到,它与未找到动态库有关 - 但是哪一个以及为什么它找不到库?

从GUI,一切正常,但从终端和iTerm出现。

系统:Macbook Pro Retina,Maverick

有什么建议?

附加信息:

$ otool -L /Applications/TextEdit.app/Contents/MacOS/TextEdit
/Applications/TextEdit.app/Contents/MacOS/TextEdit:
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1056.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 59.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.11.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1251.0.0)
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 600.0.0)

$ otool -L /Applications/Emacs.app/Contents/MacOS/Emacs-10.7 
/Applications/Emacs.app/Contents/MacOS/Emacs-10.7:
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1138.47.0)
/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.3.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 53.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 635.21.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 41.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 833.25.0)

所以我看不到任何遗漏?


当您明确打开TextEdit路径以确保它启动您在otool中指定的相同捆绑包时会发生什么?也许从较旧的系统构建中安装了第二组应用程序?您是否将命令行环境变量与完全构建的用户/系统进行比较?
bmike

显式路径:是同样的问题。但现在,没有重新启动,它是在终端下工作,但在iTerm下工作。我确信这与环境变量有关。我怎么检查这些?
Rainer

好的 - 终端中的PATH与iTerm之间存在差异 - 如何找到GUI应用程序的PATH?
Rainer

Answers:


2

我怀疑你现在已经看到问题再次出现。你描述的修复有一个副作用,最终,一段时间,解决问题。

我认为问题与您的终端的shell试图启动尝试连接到窗口系统的程序的安全上下文有关。

我从Terminal.app shell发生这个问题的解决方案就是使用reattach-to-user-namespace( https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard )。例如,在bash提示符下:

tk-mbp:~ tommy$ wstorm Projects/my-webapp
Trace/BPT trap: 5
tk-mbp:~ tommy$ exec reattach-to-user-namespace -l bash
(reading ~/.bash_profile)
tk-mbp:~ tommy$ wstorm Projects/my-webapp
tk-mbp:~ tommy$ # that worked...

作为您报告的修补程序的一部分重新启动时,它具有创建shell进程的副作用,该进程与窗口登录会话的安全上下文的连接不是陈旧的,就像之前命令失败时的“跟踪”一样/ BPT陷阱:5“。因此尽管PATH设置可能存在一个真正的问题,但我相信它是shell的进程环境的清新,这是真正的修复。

FWIW,我已经通过Homebrew安装了reattach-to-user-namespace。


几天前它已经重新出现在一个程序(不是很多)通过自制软件安装,但通过自制软件重新安装它解决了这个问题。我记住你的答案,但我认为它有不同的理由在我身边。
Rainer

1
Tommy的重新连接到用户命名空间的解决方案对我来说非常合适。谢谢。
Robin Zimmermann

我已经发现 - 通常 - 似乎足以创建一个新的shell进程。因此,例如,'exec bash -l'有效。至少有一次没有工作的机会,但是立即用另一个'exec bash -l'重试就行了。我仍然相信它与shell的launchd安全上下文有关,但它毕竟不需要reattach-to-user-namespace。
Tommy Knowlton

1

似乎PATH变量导致了问题。

使用iTerm,PATH变量包含不可预测的Unicode字符。我把它追溯到我添加到的一个条目 /etc/paths.d 目录(路径 $HOME/bin )。它包含在换行路径之后。通过使用nano编辑fikle,我没有设法删除这个Unicode(?)字符,即重新启动没有解决问题,但我使用了Emacs并删除了路径后面的所有字符(两个字符显示为不可见的空格)使用nano)并添加了RETURN。

重新启动,它正在工作 - 它仍然是。

希望它保持这样。

感谢您的输入。


我有同样的问题。碰巧我没有在最后一条路径后面添加一个换行符 /etc/paths。这样做的时候 echo $PATH 我得到了类似的东西 /bin:/usr/bin?:/another/path。添加新行导致通常 /bin:/usr/bin:/another/path 并重新启动Terminal.app使其生效解决问题:)
nacho4d

@ nacho4d:我遇到同样的问题无法从终端打开任何程序并得到相同的错误信息。你能不能更详细地描述一下如何“将新线路添加到平常”对不起但是我对bash / shell的东西不是很有经验。只想再打开我的vim!如果我键入echo $ PATH,我会得到以下内容:/ usr / local / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / git / bin:/ usr / texbin
Max Lampe

1

我有同样的问题。

我有一个隐藏文件 /etc/paths.d/ 这让我的PATH变量混淆了。我删除了文件,现在一切正常。

仅供参考,该文件是由vim生成的撤消文件: .<original filename>.un~

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.