首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在mac os catalina上调用`run`后gdb挂起

在macOS Catalina上调用run后,gdb挂起是由于操作系统的安全机制引起的。macOS Catalina引入了新的安全特性,其中一个重要的特性是对应用程序的访问权限进行了更严格的控制。这种控制机制会导致gdb无法正常运行。

为了解决这个问题,可以尝试以下几种方法:

  1. 使用lldb代替gdb:lldb是macOS上的另一个调试器,与gdb相比,在Catalina上更加稳定和兼容。可以通过在终端中运行lldb命令来启动lldb调试器,并使用其调试功能。
  2. 给gdb授予完全磁盘访问权限:在“系统偏好设置”中,选择“安全性与隐私”,然后切换到“隐私”选项卡。在左侧的列表中,选择“完全磁盘访问权限”,然后将gdb添加到允许访问的应用程序列表中。
  3. 禁用系统完整性保护(SIP):SIP是macOS的一项安全功能,限制了对系统文件和目录的访问权限。禁用SIP可能会使gdb能够正常运行,但这也会降低系统的安全性。要禁用SIP,请按照以下步骤操作:
    • 重启Mac,并按住Command+R键进入恢复模式。
    • 打开终端,并输入csrutil disable命令。
    • 重启Mac。

请注意,禁用SIP可能会对系统的稳定性和安全性产生负面影响,因此请谨慎操作。

希望以上方法能够帮助您解决在macOS Catalina上调用run后gdb挂起的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 gdb 调试多进程程序 —— 以调试 nginx 为例

) 使用 f 1 命令切换到当前调用堆栈 #1,我们可以发现 nginx 父进程的主线程挂起 src/core/nginx.c:382 处。...) 可以发现子进程挂起 src/event/modules/ngx_epoll_module.c:800 的 epoll_wait 函数处。...有些读者可能会说,我用 gdb 附加到进程,我加好断点然后使用 run 命令重启进程这样不就可以调试程序从启动到运行起来之间的执行流程了。...) 如果想在 fork 之后 gdb 去 attach 子进程,我们可以程序运行之前 gdb 中设置 set follow-fork child,然后使用 run 命令重新运行程序。...) 我们接着按 Ctrl +C 将程序中断下来,然后使用 bt 命令查看当前线程调用堆栈确实是我们方法一中子进程的主线程所在的调用堆栈,这说明 gdb 确实 attach 到子进程了。

2.6K10

C编译: 使用gdb调试

gdb中,你可以通过设置断点(break point)来控制程序运行的进度,并查看断点时的变量和函数调用状况,从而发现可能的问题。许多IDE中,gdb拥有图形化界面。...这里主要介绍gdb的命令行使用,并以C程序为例。测试使用的计算机是Mac OS系统。 启动gdb 下面的有两个C文件。(并没有bug。...我们实际编译了两个文件,没有说明的情况下,默认为主程序文件test.c: 4 5 int main() 6 { 7 int i; 8 float a=...显示某个函数,比如: (gdb) list mean 设置断点 我们可以运行程序: (gdb) run 程序正常结束。 运行程序并没有什么有趣的地方。gdb的主要功能在于能让程序中途暂停。...(gdb) set var a=0.0 (gdb) set var array_a={0.0, 0.0, 1.0, 1.0} 当程序继续运行时,将使用更改的值。

1.1K70

通过USB连接方式共享安卓的网络连接

但是,很不幸,此时将Android手机通过USB数据线连接到Mac电脑没有任何反应,完全不像iPhone开启”个人热点”的USB共享连接到Mac电脑即插即用。...操作系统日志 LOG(....)遍布HoRNDIS代码的语句调用IOLog函数。Mac OS El Capitan(10.11)和更早版本,日志消息进入/var/log/system.log。...OS日志记录不可靠(尤其是Sierra中)。...由于HoRNDIS是内核扩展,所以Catalina (macOS 10.15)无法直接安装,因为kext开发需要通过Apple认证。...安装完 HoRNDIS 驱动以后,需要重启一次macOS,重启以后,将启用了 USB tethering 设置的Android手机通过USB数据线连接到Mac电脑,此时Mac的 Networks 设置中会看到一个

7.2K31

买了很多书,看了很多教程,仍然看不懂开源代码......

) 使用 f 1 命令切换到当前调用堆栈#1,我们可以发现 Nginx 父进程的主线程挂起 src/core/nginx.c:382 处。...) 可以发现子进程挂起src/event/modules/ngx_epoll_module.c:800的 epoll_wait 函数处。...有些读者可能会说:用 gdb 附加到进程,加好断点,然后使用 run 命令重启进程,这样就可以调试程序从启动到运行起来之间的执行流程了。...gdb fork 之后去 attach 子进程,我们可以程序运行之前设置 set follow-fork child,然后使用 run 命令重新运行程序。...) 我们接着按 Ctrl + C 将程序中断下来,然后使用 bt 命令查看当前线程调用堆栈,结果显示确实是我们方法一中子进程的主线程所在的调用堆栈,这说明 gdb 确实 attach 到子进程了。

94422

基于 Ubuntu 平台安装 OS X 10.15 虚拟机

OS X 系统启动时会识别计算机主板,针对非苹果电脑拒绝启动,就算是虚拟机,也有天然的限制不可以随便安装 OS X 虚拟机,本文就介绍了 Ubuntu 平台上使用 VMware Workstation...注:进入 mac实用工具 先进入磁盘工具,将刚刚分配好的虚拟磁盘抹掉格式化,结束后退出磁盘工具,再进入mac安装。其他步骤就很日常啦,有问题敬请留言!...详细步骤请参考:如何在WindowsVMware安装macOS Catalina 10.15 ?...安装 VMware tools 安装 VMware tools 时可能会遇到一个问题:无法更新服务器找到组件。请联系 VMware 技术支持或您的系统管理员。...工具 用linux制作Mac OS U盘启动 balena Etcher VMWare虚拟机安装dmg格式的macOS操作系统 macOS Catalina 10.15.3 19D76 黑苹果原版Clover

2.7K20

苹果架需要什么

本文介绍了如何从Mac OS X Catalina将IPA文件上传到App Store的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!...Mac OS X Catalina中,没有iTunes应用,并且XCode> Open Developer Tool> Application loader中找不到.更新:我可以XCode中打开存档...这篇关于如何从Mac OS X Catalina将IPA文件上传到App Store的文章就介绍到这了,希望我们推荐的答案对大家有所帮助。...立即下载最新版本 appuploader官网首页下载,如果您是windows电脑,则选择点击 windows版,如果是mac 电脑则选择 mac版 下载解压到电脑中就安装完成了。...mac电脑修改文件权限部分功能不可用处理有些电脑可能会对runtime下的组件进行权限控制,导致无法调用组件,例如无法上传,可以双击运行下试试是否被系统权限阻止,正常会是一个黑色框一闪而过,如果系统提示权限错误

26730

使用 Kubernetes 模糊测试

下图显示了二进制文件运行和搅动的 pod。 有趣和不那么有趣的崩溃 让愚蠢的模糊器二进制语料库运行几个小时,产生了许多崩溃。然而,大多数人实际是自我影响的。...模糊测试工具的一个关键组成部分是超时值subprocess.run如果二进制文件只是长时间挂起进程,它将被视为崩溃并保存到崩溃目录(cdir)。...这个特定的文件是一个 MS-DOS 可执行文件,NE(未知 OS 0)。了解格式很重要,因为这将与我们radare2 项目中检查的C 文件相关联。...通过 gdb 重新执行程序并检查“模块”参数,我们第一次看到实际模块中有数据。...数据如何传递给易受攻击的函数 易受攻击的函数__func_name_from_ord只一个文件中被调用,ne.c特别是第 488 行。这个函数调用在一个迭代程序段的存根中。

1.5K20

MacOS 破坏 SSH 默认规则,程序员无法登录 Web 服务器,苹果新系统遭吐槽!

都是Mac惹的祸 Taylor首先登陆服务器提供商Linode的控制面板,重启了自己的服务器,用Mac电脑依然无法登陆。 奇怪的是,服务器没有拒绝连接,甚至没有超时,只是挂起。...为了更进一步证实自己的想法,Taylor自己的iMac开了个Ubuntu的虚拟机,用它来连接自己的服务器,结果连上了!...带着这个问题,Taylor谷歌搜索“10.15.4 SSH”,苹果论坛找到了下面的内容: 使用服务器名称代替IP地址时,若Catalina 10.15.4的SSH端口>8192将不起作用。...Taylor抛出这个SSH故障问题,广大程序员立即开启了吐槽模式:新版的Catalina(10.15)实在太难用啦! Hacker News的评论几个小时内就涨到了200多。 ?...有的程序员更新到Catalina,过去的开发环境惨遭破坏,无奈之下又降级到Mojave(10.14)。 而且Catalina对外接显示器的支持也变得更差。

1.5K20

关于苹果电脑制作启动U盘的归纳

如果你需要安装MacOS big sur及以上系统需要准备一个16GB以上的u盘,而安装MacOS Catalina及以下的系统需要准备一个8GB的u盘。 插上u盘到电脑。...Mac 运行的是 macOS Sierra 或更低版本,请使用 --applicationpath 参数和安装器路径,具体方法与适用于 Sierra 的命令中完成这个操作的方法类似。...macOS 安装器打开,请按照屏幕的说明操作。 Intel 处理器 将可引导安装器插入已连接到互联网且与您要安装的 macOS 版本兼容的 Mac。...将 Mac 开机或重新启动,立即按住 Option (Alt) ?键。 当您看到显示可引导宗卷的黑屏时,松开 Option 键。 选择包含可引导安装器的宗卷。...从 “实用工具” 窗口中选择“安装 macOS”(或“安装 OS X”),然后点按“继续”,并按照屏幕的说明进行操作。

4.9K20

MacOS怎么设置动态桌面,heic动态桌面壁纸怎么用

Mac动态桌面,它可以仅设定一张高效图片文件「High Efficiency Image File Format(简称 HEIF)」,随着时间的推移改变桌面显示的内容。...Mac怎么设置动态壁纸如果您的OS系统为15.3以上,无法通过以下教程完成拖动安装,或者不能正确打开Desktop Pictures替身路径,手动查询也找不到该文件夹,可以尝试按/Library/下,自己新建一个...访达桌面选择--前往---前往文件夹,后续操作如下这里以mac catalina动态壁纸【卡特琳娜岛】Mac动态桌面壁纸为例,动态壁纸设置方法一:catalina动态壁纸镜像包下载完成打开,将左侧的【...桌面右击点开【更改桌面背景】。桌面与屏幕保护程序里就可以看到已经安装好的【卡特琳娜岛】Mac动态桌面壁纸了。...动态壁纸设置方法二:catalina动态壁纸镜像包下载完成打开,将左侧的【Catalina.heic】拖到右边的【Desktop Picture】(/Library/Desktop Pictures)

2.3K20

Linux进程学习【进程状态】

前言 进程 只有被OS管理好了,才能发挥它的全部功效,而系统中存在多个 进程,OS无法做到面面俱到,因此为了更好的管理进程,OS把 进程 分成了几种状态:阻塞、挂起、运行、休眠等等,至于每种状态的应用场景是什么...进程 为 阻塞 状态 总结 进程阻塞就是不被调度 原因 进程的 task_struct 结构体需要在某种被 OS 管理的资源下排队 挂起 理解 进程阻塞 ,理解 进程挂起 就比较轻松了 挂起(...运行了,但我们 很难捕捉到 对于 CPU 来说,将这么简单的一句话输出到屏幕是一件很小的事,可能几毫秒就完成了 而其他大多数时间,进程 都在外设等待队列中 排队 当我们将打印语句和睡眠语句屏蔽,进程...进程 在后台运行 注意: 进程 在后台运行时,是无法通过 ctrl+c 指令终止的,只能通过 kill -9 PID 终止 gdb 中调试代码时,打断点实际就是 使 进程 指定行暂停运行...T 状态 通俗来说,僵尸状态 是给 父进程 准备的 当 子进程 被终止,会先维持一个 僵尸 状态,方便 父进程 来读取到 子进程 的退出结果,然后再将 子进程 回收 单纯的 bash 环境下终止

20330

深入LUA脚本语言,让你彻底明白调试原理

操作系统库 这个库提供与操作系统进行交互的功能,例如提供了函数: os.date os.time os.execute os.exit os.getenv 调试库 先看一下库中提供的几个重要的函数: debug.gethook...与gdb调试模型做类比 一篇文章说过,gdb调试模型有两种:本地调试和远程调试。 本地调试 ? 远程调试 ?...ldbserver接收到用户指令(eg: run),自己应该暂停执行(pending),让被调试程序继续执行(running)。 ? 上图中,两条红色箭头表示两个执行序列。...一个协程 Lua 中代表了一段独立的执行线程。然而,与多线程系统中的线程的区别在于, 协程仅在显式调用一个让出(yield)函数时才挂起当前的执行。...假设用户发送来全速执行指令(run),ldbserver就调用coroutine.yield让自己挂起,此时被调试程序所在的主程序就可以继续执行了。 进行到这里,基本大功告成!

4.2K43

Spring Boot Dubbo 应用启停源码分析

方法中,实际上当前线程一个while循环中每10秒检查一次 stopAwait这个变量,它是一个 volatile 类型变量,用于确保被另一个线程修改,当前线程能够立即看到这个变化。...通过对源码分析,可以看到只有一个方法修改了 stopAwait,即 org.apache.catalina.core.StandardServer#stopAwait,我们在此处加个断点,看看是谁在调用...注意,当我们Intellij IDEA的Debug模式,加上一个断点,需要在命令行下使用 kill-s INT $PID或者 kill-s TERM $PID才能触发断点,点击IDE的Stop按钮...可以看到有一个名为 Thread-3的线程调用了该方法: stopAwait:390, StandardServer (org.apache.catalina.core) stopInternal:819..., StandardServer (org.apache.catalina.core) stop:226, LifecycleBase (org.apache.catalina.util) stop:377

58550
领券