腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
Linux -进程的堆栈大小
在Linux中,进程是否具有有限的堆栈大小?也就是说,它的函数堆栈的总和可以不超过固定的大小吗?如果它是固定的,那么它的大小是如何确定的,可以设置吗?
浏览 13
提问于2012-11-02
得票数 2
1
回答
Linux进程的“用户”区域的布局
、
PTRACE_POKEUSER(2)提供了修改Linux进程的“用户”区域的工具(在ptrace中搜索ptrace)。 这个内存区域是什么样子的?我在哪里可以找到它的布局文档? 谢谢! 附注:我知道该区域包含信号操作、会计信息和系统堆栈等内容,但我对确切的格式很好奇。=)
浏览 1
提问于2012-01-13
得票数 4
回答已采纳
2
回答
为什么要为linux中的每个进程保留一个内核堆栈?
、
、
、
在linux中为每个进程保留不同的内核堆栈有什么意义? 为什么不只保留一个堆栈供内核使用呢?
浏览 0
提问于2014-06-25
得票数 6
回答已采纳
1
回答
运行程序中的堆栈跟踪(Windows中等效的p堆栈)
、
、
、
我正在尝试调试一个死锁/冻结在特定时间的.NET应用程序。有没有一种方法可以查看应用程序在冻结时正在做什么?我假设Visual提供了某种方式来查看附加到应用程序之后的堆栈跟踪?(我确实尝试过调试>附加到进程,并打开了调用堆栈和堆栈跟踪资源管理器Windows,但是没有显示任何内容)。我正在寻找与pstack (在Unix/Linux上)所做的类似的东西,即显示运行过程的堆栈。
浏览 5
提问于2015-09-21
得票数 5
回答已采纳
1
回答
Linux中的堆栈内存管理
、
、
我有几个关于Linux堆栈大小限制的问题。我对x86_64系统最感兴趣,但如果存在平台差异,我也想了解它们。我的问题是: 1) Linux如何动态地增加堆栈的大小? 我编写了一个带有递归函数(使用堆栈空间)的测试程序,可以将迭代次数指定为命令行参数。程序在完成递归之后暂停等待用户输入,这允许我获得有关正在运行的进程的信息。如果我运行少量迭代,然后使用pmap查看堆栈大小,则为132 K。 00007fff0aa3c000 132K rw--- [ stack ] 然而,如果我使用更多的迭代运行,那么它的大小可能会大得多,我相信默认情况下最多可以达到8192 KB。例如,这里的输出与更
浏览 1
提问于2015-07-09
得票数 3
1
回答
TCB在FreeBSD上的位置在哪里?
、
、
、
、
内核线程控制块在FreeBSD上的位置在哪里?(中断线程后,上下文(包含%RIP/%EIP)保存在哪里?)它是在内核堆栈上还是在其他地方? 在FreeBSD中,进程和线程是否非常相似,比如在Linux上,还是完全不同的抽象?
浏览 3
提问于2015-05-07
得票数 0
回答已采纳
1
回答
操作系统如何处理多个线程的堆栈增长,并选择“无限-s”?
、
、
、
、
默认情况下,linux堆栈大小限制为8MB。因此,在多线程环境中,每个线程将得到自己的8MB堆栈。如果任何线程从堆栈底部漫游到保护页面中,则会得到分段故障信号的奖励。这样,我们就可以防止堆栈相互重叠或与其他内存区域重叠。 但是,在“# ulimit -s无限”的帮助下,我们可以分配尽可能多的内存进行堆栈(直到我们没有与堆或其他内存区域发生冲突)。 我的问题是: 在执行“# ulimit -s无限”之后 linux将多个线程堆放在虚拟内存中的位置?它不能是连续的分配,否则它们不能扩展。 它是如何计算虚拟内存中两个堆栈之间的自由空间的,从而使它们有平等的扩展机会。
浏览 11
提问于2022-04-15
得票数 1
2
回答
为什么在Linux中堆栈溢出会导致分段错误而不是堆栈溢出?
、
、
可能重复: 我只是想知道,为什么堆栈溢出会导致分割错误而不是堆栈溢出。 是因为跨越了堆栈边界而导致SIGSEGV的吗?为什么我们在Linux中没有遇到堆栈溢出,而是一个分段错误? int foo() { return foo(); } 这个小代码应该会导致堆栈溢出,但是它会导致Linux中的分段错误。
浏览 3
提问于2011-08-08
得票数 22
1
回答
为什么linux中的每个进程都有内核堆栈?
最近,我开始学习linux,有一系列的问题,我要问。 在阅读时,我遇到了一个术语“内核堆栈”,我无法理解为什么linux内核在每个进程中使用内核堆栈? 当进程正在执行时,为什么esp寄存器具有顶部的地址--进程的内核堆栈--以及为什么不具有相应进程的用户模式堆栈顶部的地址?
浏览 0
提问于2020-08-07
得票数 1
回答已采纳
2
回答
捕获来自另一个进程的异常
、
、
我想知道捕获异常的可能性,以及在进程中的任何进程或线程中可能发生的相关堆栈跟踪。这是否可能(例如在Linux中)?请看一看我试图做的事情的一个例子: OS : Linux P1:(在其中运行一些应用程序) P2 : Python过程 P3 : C++工艺 P4 :我的自定义监控代码(监听P1、P2、P3中可能出现的异常) 假设P1生成一个发生在it代码中的异常(例如NullPointerException),该异常在Java代码中被正确捕获,相关的异常处理过程运行。类似地,P2和P3可能会在稍后时间发生异常。 P4 (另一个进程只侦听P1、P2和P3中的异常)能捕获
浏览 3
提问于2014-06-02
得票数 1
1
回答
使用fork的父进程和子进程
、
、
在Linux下,当我调用fork()系统时,父进程和子进程共享相同的数据。它指的是什么类型的数据?(例如堆数据或其他什么?) 我的意思是,如果存在所有内存(堆栈、堆和文本)的副本,则效率会很低。一定有别的什么事情在发生。 写入时复制告诉我,在写入之前,所有内容都不会复制。
浏览 4
提问于2015-03-28
得票数 1
4
回答
从哪里为Linux进程分配堆栈内存?
、
、
我们知道,当创建进程时,为这个堆栈的process.The大小分配一个堆栈通常是linux.My中的8 Mb。问题是,从何处分配这个堆栈??从用户空间还是从系统空间?
浏览 5
提问于2013-07-16
得票数 4
1
回答
用于linux redhat 6的j堆栈替代方案
我按照这里给出的示例查找线程堆栈http://code.nomad-labs.com/2010/11/18/identifying-which-java-thread-is-consuming-most-cpu/。 总之,在我的红帽linux盒上没有可用的j堆栈。根据这个链接,http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstack.html j堆栈不再可用。 我可以使用同一组信息的替代命令。 谢谢
浏览 0
提问于2014-02-11
得票数 1
2
回答
过程控制块与过程描述符
、
process control block和process descriptor的确切区别是什么? 我正在读关于linux内核的文章。它被写成有一些thread_info结构,其中包含指向实际进程描述符表的指针。它被写成thread_info恰好位于内核堆栈的上方/下方。所以thread_info肯定在主内存中。但是,实际的流程描述符task_struct又如何呢?它位于哪里?如果进程描述符驻留在主内存中,那么它的实际位置在哪里?
浏览 2
提问于2011-02-10
得票数 0
2
回答
如何确认应用程序是否接收到数据包
、
、
我的怀疑很奇怪.. 在我的Linux服务器上,DHCP服务器应用程序正在端口号547上等待dhcp客户端消息。 即使我在wireshark上看到来自dhcp客户端的消息(在我的Linux服务器上运行) ..dhcp服务器没有应答。 有没有办法确认数据包实际上是由dhcp服务器处理的,还是由Linux ip堆栈在两者之间丢弃的? DHCP服务器是专有代码,所以我不能修改它来添加更多的日志或检查recv函数。 只需将其视为基于套接字的通用问题,而不是特定于DHCP的问题。我感兴趣的是,我们如何从统计数据或其他信息中知道数据包已在适当的套接字缓冲区中收到。
浏览 6
提问于2011-09-10
得票数 3
回答已采纳
1
回答
Install4j:是否可以配置一个install4j启动程序来响应杀死-3并生成一个线程转储?
、
我想自动创建一个线程转储,作为我编写的日志收集脚本的一部分。 我知道,可以使用j堆栈或杀害-3生成线程转储。运行日志收集脚本的客户将只安装一个JRE,因此j堆栈不是一个选项。 如果我使用j堆栈和install4j启动程序创建的JVM的pid,那么使用相同pid调用dump...however -3的线程将不会生成任何输出。我目前正在使用install4j启动程序配置将stderror和stdout定向到文件。 这是一个使用服务选项配置的linux启动程序。 FWIW.我尝试过不指导输出,也没有尝试将我的应用程序作为控制台程序来运行,而不是服务,而这些都不允许“杀死-3”工作。 我使用的是ins
浏览 9
提问于2016-04-25
得票数 2
回答已采纳
2
回答
如何以编程方式获得Linux进程的堆栈开始和结束地址?
、
、
对于单线程程序,我想检查给定的虚拟地址是否在进程的堆栈中。我想在用C写的过程中做到这一点。 我正在考虑阅读/proc/self/maps,以找到标记为堆栈的行,以便获得进程堆栈的开始和结束地址。考虑到这个解决方案,我提出了以下问题: /proc/self/maps为我的特定进程显示了一个132 k的堆栈,并且在我的系统上,堆栈的最大大小(ulimit -s)是8 mega。Linux如何知道由于我们超过堆栈限制而发生的给定页面错误属于堆栈(必须使堆栈更大),而不是我们正在到达进程的另一个内存区域? Linux会收缩堆栈吗?换句话说,例如,当从深度函数调用返回时,操作系统是否减少了与堆栈
浏览 5
提问于2014-04-23
得票数 16
回答已采纳
1
回答
线程堆栈是否来自Linux上进程的内存映射段?
、
、
我目前正在学习Linux。我知道线程是Linux上的一种轻量级进程。但是我想知道线程堆栈空间来自哪里。 线程的堆栈是私有的。它独立于进程堆栈。根据我的搜索,有人说线程堆栈是由mmap()创建的。而且,也有人说mmap()空间不是heap。它介于堆栈和堆之间。因此,线程堆栈来自进程的内存映射段。对吗?
浏览 0
提问于2022-10-06
得票数 3
回答已采纳
1
回答
使用.net 4进行线程转储
、
、
、
日安。我正在尝试获取.net 4框架应用程序中的线程转储(每个运行线程的堆栈跟踪和状态)。 托管堆栈资源管理器不能在.net 4上运行(我真的找不到相关信息),它只显示.net 3.5及更低版本的应用程序。 Process explorer确实给出了一个线程转储,但使用的是起始地址,而不是堆栈跟踪,这不是很有帮助。 有什么想法吗?
浏览 2
提问于2011-04-11
得票数 6
回答已采纳
4
回答
如何在linux中找到不同的启动内存段及其大小
、
、
、
我是linux新手。我想知道不同段(如堆栈、堆、数据等)的起始地址及其大小。以及它现在的用法。 我想知道如何在运行过程和核心转储中找到。 提前谢谢。
浏览 0
提问于2011-07-08
得票数 2
回答已采纳
1
回答
如何查找任意用户进程中的线程数?task_struct中有任何变量吗?
、
、
在linux的task_struct中,有没有统计进程中总运行线程数的成员? 我读到在linux中没有线程,但如果我们检查任何进程目录(proc/PID/ task )中的任务目录,就会发现进程的所有线程都有一个目录
浏览 0
提问于2014-12-15
得票数 0
2
回答
在linux中,每个进程都有一个4GB的虚拟地址空间,考虑到32位的体系结构。
、
、
、
、
嗨,我是Linux内核开发的新手。因此,希望对下面的语句有一些清晰的说明。 在内存中,每个进程都有一个4GB的虚拟地址空间。 考虑32位架构。进程的用户空间部分可以访问较低的3GB虚拟地址,内核空间部分可以访问上1GB的虚拟地址。 这是否意味着linux中的每个进程都分配了那么多内存空间( 1GB+3GB )? 如果是的话,那么linux中就有数百个进程,那么100*4GB的空间来自系统获得这么多内存空间的地方吗? 它与内核堆栈和用户堆栈有什么关系? linux中的每个进程都有内核和用户堆栈吗?
浏览 3
提问于2015-06-13
得票数 3
1
回答
如何找到给定C函数的分配内存(地址和大小)以及在其中声明的变量?
、
、
、
、
如果我有一个简单的C程序,只有一个主要功能。 如何查找块的地址,代码被分配给,进程分配的内存块的大小?,堆栈的状态(即堆栈的大小和指向堆栈的基本指针),程序中声明的每个变量的大小和位置。(我明白如何使用(相当大的)及(及)营办商。但是,如何跟踪分配给流程的每个块给变量或分配给它们的簿记变量)。 如果这些构造是由操作系统维护的呢?哪些是可以访问的,为什么? 在程序执行时,是否有任何工具可用于可视化这样的程序状态? 谢谢德科斯托。
浏览 1
提问于2011-03-02
得票数 0
1
回答
被ptrace中断的CPU上下文在哪里,用户空间堆栈还是内核堆栈?
、
、
、
、
在Linux x86_64上,当我使用ptrace停止进程时,会保存所有线程的CPU上下文,还是只保存进程的CPU上下文? 进程的用户空间堆栈还是内核堆栈上的上下文?或者其他地方?还是多份? 对于其他情况(不是ptrace),中断(包括异常和syscall) CPU上下文、内核堆栈、用户空间堆栈或其他地方可以保存在哪里? 这是中断吗? 更新 看来,ptrace的上下文pt_regs_x86_t,保存的位置是由程序员决定的。但是内核也会为中断的上下文存储一个副本吗?
浏览 1
提问于2015-04-22
得票数 2
回答已采纳
1
回答
无法解决“未登录异常java.lang.OutOfMemoryError:无法创建新的本机线程”时在JMeter中使用多线程进行测试
、
、
、
、
我正在用JMeter测试MQTT连接。 测试在非GUI模式下运行。在测试期间,所有侦听器都被禁用。 在我将线程数量从2k增加到3k之前,一切都很好。现在,当我运行测试时会发生此错误: Uncaught Exception java.lang.OutOfMemoryError: unable to create new native thread. See log file for details. 我尝试通过编辑可执行文件“the”来增加堆的大小。 这是我怎么编辑的。我把它从512米改为1024米: 但不起作用。然后我换到了一个更大的价值2.048亿,仍然不起作用。 我搜索了这个问
浏览 3
提问于2017-05-10
得票数 0
1
回答
位于进程虚拟地址空间中的其他线程的堆栈在哪里?
、
、
、
、
下图显示了进程的各个部分在进程的虚拟地址空间中的布局(在Linux中): 您可以看到只有一个堆栈部分(因为我假设这个进程只有一个线程)。 但是,如果这个进程有另一个线程,那么第二个线程的堆栈将位于何处?它会位于第一个堆栈的正下方吗?
浏览 0
提问于2017-07-01
得票数 12
2
回答
如何找到Linux中Java进程创建的前10个或前几个CPU密集型线程?
、
、
、
如何找到Linux中Java进程创建的前10个或前几个CPU密集型线程堆栈跟踪?如果可能的话,我也想知道花了多少时间。
浏览 18
提问于2017-02-25
得票数 2
5
回答
如何转储线程堆栈
、
、
我想将线程堆栈转储到一个文件中。我如何在linux中做到这一点?如何找到堆栈的起始地址及其大小?请注意,我希望从相同的进程(而不是使用ptrace、gdb或类似的东西)以编程方式完成此操作。
浏览 0
提问于2011-10-27
得票数 3
2
回答
进程的内存详细信息
、
、
如何获取在linux上运行的进程的内存详细信息?我需要找出特定的细节,比如堆栈大小,进程的堆大小。
浏览 3
提问于2011-05-25
得票数 2
回答已采纳
2
回答
在程序的内存布局中,“内核堆栈”、“C运行时启动函数的框架”和"Frame ()“在哪里?
、
、
来自Linux编程接口: 📷 在上面的图表中内核堆栈(在下面的引号中提到)在哪里?在上面的图表中,它是否是“内核(映射到进程虚拟内存,但没有附加程序)”的顶部部分?术语用户堆栈用于区分我们这里描述的堆栈和内核堆栈。内核堆栈是在内核内存中维护的每个进程内存区域,用作在执行系统调用期间执行内部调用的函数的堆栈。(内核不能为此目的使用用户堆栈,因为它驻留在不受保护的用户内存中。) 在上面的图表中,“C运行时启动函数的框架”和“main()的框架”(从下图中提到)在哪里?以上图表中的"argv,environ“是”C运行时启动函数的框架“还是”main()的框架“,还是其中的一部分? 📷 在0
浏览 0
提问于2018-09-02
得票数 3
回答已采纳
2
回答
为什么克隆包装器需要堆栈参数?
、
、
、
我一直在仔细阅读用于克隆()的linux手册页,并且理解了克隆()包装器和“原始”系统调用之间的区别。但是,我不明白的是,为什么父进程需要为子进程分配堆栈,即使在包装器中没有使用CLONE_VM。 如果不使用CLONE_VM,包装器会忽略堆栈参数吗?那又何必要求呢?原始系统调用允许它为null,这是有意义的,但我不明白为什么包装器需要这样做。即使你不告诉它,包装器会让孩子和父母共享记忆吗?
浏览 0
提问于2021-04-26
得票数 4
回答已采纳
1
回答
Linux ISR的堆栈在哪里
、
、
我知道linux进程有两个独立的堆栈--一个在用户空间,另一个在内核空间。但是ISR使用的堆栈在哪里?它是否与进程的内核空间堆栈共享?
浏览 2
提问于2012-09-26
得票数 3
回答已采纳
3
回答
用于Linux内核的线程感知gdb。
、
、
、
我使用附加在虚拟机串口上的gdb来调试linux内核。 我想知道,是否有任何补丁/插件可以使gdb理解linux内核的某些数据结构,并使其“线程感知”? 我的意思是在gdb下,我可以看到有多少内核线程,它们的状态,以及每个线程的堆栈信息。
浏览 2
提问于2012-03-05
得票数 2
回答已采纳
1
回答
如何进入主堆栈
、
、
、
我使用交替堆栈来处理C在linux上的程序信号。当堆栈溢出发生时,我的信号被传送到我的备用信号堆栈上,而不是在主堆栈上。 所以在这种情况下,我想转储主堆栈..。我怎么能?
浏览 2
提问于2008-12-16
得票数 0
6
回答
如何为linux上的clone()系统调用映射堆栈?
、
、
、
、
Linux上的clone()系统调用接受一个参数,该参数指向新创建的线程要使用的堆栈。最明显的方法是简单地malloc一些空间并传递它,但是你必须确保你malloc的堆栈空间和线程使用的一样多(很难预测)。 我记得在使用pthread时,我并不需要这样做,所以我很好奇它会做什么。我遇到了,它解释说:“Linux pthread实现使用的最佳解决方案是使用mmap来分配内存,并使用标志指定在使用时分配的内存区域。这样,内存就会在需要时分配给堆栈,如果系统无法分配额外的内存,就会出现分段冲突。” 我听说mmap使用的唯一上下文是将文件映射到内存中,实际上,阅读mmap手册页需要一个文件描述符。如何
浏览 0
提问于2009-07-04
得票数 13
回答已采纳
1
回答
内核堆栈虚拟地址
、
、
在每个进程上下文中,linux 内核堆栈是否位于相同的虚拟地址? 在回答之前,请注意,我已经指定了内核堆栈,而不是用户空间堆栈。
浏览 3
提问于2017-09-14
得票数 2
3
回答
Linux中所有执行的列表
、
有可能找到在Linux中执行的所有程序吗?在系统的生命周期中,会有许多脚本和其他可执行文件被启动和删除,我希望得到这些文件的列表(或者在执行开始时打印出来)。我正在寻找这个来理解程序流在一个嵌入式板。
浏览 9
提问于2016-02-06
得票数 0
回答已采纳
2
回答
多线程进程堆栈的最大大小
、
、
、
、
根据我的理解 进程的每个线程都得到一个堆栈,而进程通常只有一个堆。 操作系统设置了默认的堆栈最大大小限制。 1. Windows-64 bit : 1MB 2. Linux-64 bit : 8MB 此限制是否适用于进程级别,还是每个线程可以有1MB/8MB堆栈? 分配给一个接着一个线程退出的堆栈的内存会发生什么呢?
浏览 0
提问于2019-05-11
得票数 3
回答已采纳
5
回答
Linux内核:线程与进程- task_struct与thread_info
、
、
、
我读到Linux不支持线程或轻量级进程的概念,它和其他进程一样考虑内核线程。然而,这一原则并没有在代码中得到非常准确的反映。我们看到task_struct保存进程的状态信息(如果错误的话纠正我),也看到thread_info附加到进程内核堆栈的底部。 现在的问题是,当linux应该像任何其他进程一样解释线程时,为什么代码支持通过thread_info单独线程的概念? 请告诉我我在这里缺少的是什么-我是linux内核开发的新手。
浏览 6
提问于2014-01-26
得票数 16
回答已采纳
3
回答
Linux内核中的堆栈内存
、
、
、
最近,我试着想象如何在Linux内核中处理堆栈内存,但无法想出任何可靠的东西。我知道内核使用它自己的函数来进行动态内存管理,但是我不知道它是如何管理普通C堆栈内存的,因为它毕竟可以用普通C实现,用普通GCC编译。据我所知,在处理操作系统时,堆栈内存分配通常由libc的一种形式处理,甚至在类似AVR的情况下也是如此。但据我所知,Linux内核不依赖libc? 我不太清楚堆栈内存管理最初是如何委托给libc的,尽管它似乎是内置的语言特性。我所能想象的是,它是以某种方式被通用编译(或实现)的,这样就可以在编译过程之后或者可能作为编译过程的一部分分配提供程序。有人能帮我弄清楚这件事吗?
浏览 3
提问于2015-12-31
得票数 2
回答已采纳
2
回答
Linux进程的堆栈大小是如何与线程、叉和exec相关的?
、
、
、
、
关于Linux上进程的堆栈大小,我有一个问题。此堆栈大小是否在链接时确定并在ELF文件中编码? 我写了一个程序来打印它的堆栈大小 pthread_attr_getstacksize(&attr, &stacksize); 如果我直接从shell运行这个程序,它的值大约是10 of。但是,当我从属于多线程程序的线程中exec它时,它的值大约为2MB。 因此,我想知道哪些因素影响来自某些父进程的fork and exec-ed进程的堆栈大小。在子进程fork and exec之前,是否可以在其父进程运行时设置进程的堆栈大小?
浏览 5
提问于2010-02-26
得票数 15
2
回答
检查生产ASP.NET进程的状态
、
、
有没有一种方法可以检查asp.net进程在生产环境中做了什么?在Linux中,可以对进程id运行strace,并确切地知道该进程在做什么。可以在asp.net进程上做类似的事情吗?谷歌告诉我,您需要创建转储文件,然后分析那里的问题,但如果我只想检查进程的当前状态呢?(如高速缓存大小、运行时间最长的线程、特定对象的#...等)。 任何帮助都是最好的。 谢谢
浏览 5
提问于2009-05-28
得票数 0
回答已采纳
1
回答
如何在没有p堆栈和gdb的情况下获取线程堆栈信息
、
、
、
当程序无法插入任何日志,在某个非常小的linux上没有p堆栈和gdb时,是否有一种方法可以获得程序卡在其中的原因?
浏览 6
提问于2017-08-09
得票数 3
回答已采纳
1
回答
TCP/IP堆栈如何将UDP数据包处理到本地主机和您自己的目标地址?
、
、
、
我试图了解网络堆栈(TCP/IP)如何处理UDP消息到本地主机。我假设它沿着堆栈向下并到达IP层,如果它看到localhost,那么它会把它发送回堆栈上吗? 我还试图了解网络堆栈(TCP/IP)如何处理发送给您自己的NIC的UDP消息?如果我的NIC被分配给192.168.0.1并且源地址和目标地址是相同的,会发生什么?它是否离开了硬件,它到底往下走了多远? 这些事情发生的任何Linux源代码都是非常感谢的!!
浏览 0
提问于2017-04-18
得票数 1
1
回答
是否可以在linux计算机上查看页表
、
、
最近我读到页表是每个进程的实体,我在想在Linux机器上查看特定进程的页表是可能的吗?我读到在一些寄存器中有对页表的引用?
浏览 3
提问于2014-04-03
得票数 0
1
回答
在Linux中检查进程的堆栈使用情况
、
我使用的是3.12.10版本的Linux。我正在编写一个简单的模块,它循环遍历任务列表,检查每个进程的堆栈使用情况,看看是否有任何进程有溢出堆栈的危险。要获得我使用的进程的堆栈限制: tsk->signal->rlim[ RLIMIT_STACK ].rlim_cur 要获取堆栈开始时的内存地址,我使用: tsk->mm->start_stack 然后,我从它中减去这个宏的结果: KSTK_ESP( tsk ) 大多数情况下,这似乎工作得很好,但有时我会遇到这样的情况:进程的使用超过其堆栈限制(通常为8 MB ),但是进程继续运行,Linux本身没有报告任何类型的问题。
浏览 2
提问于2018-07-03
得票数 1
回答已采纳
3
回答
防止子进程成为孤立进程
、
、
、
我的Linux进程有4个子进程。执行一段时间后,init进程采用的所有子进程。我们如何防止这种情况?(僵尸进程不是这种情况)。 该过程是用C语言编写的,操作系统是Linux。我的代码调用waitpid!可能的问题是什么?在99,99%的情况下,我们没有这个问题。 最后更新:如果有人执行"kill -9“怎么办?这会立即终止父进程,并留下子进程为孤立进程。
浏览 6
提问于2011-07-25
得票数 2
回答已采纳
1
回答
用户进程在linux上的堆栈位置范围
、
在Linux中,在启用ASLR的情况下,是否存在用户堆栈地址所在的一系列地址?堆,指令地址(文本部分)呢?一般来说,是否可以查看一个地址并判断它是用于数据还是用于代码? 我正在尝试编写一个Pintool,它在返回后查看EIP,并检查EIP是否指向数据区域。让我们假设这个系统上没有启用NX。
浏览 0
提问于2018-05-06
得票数 3
回答已采纳
1
回答
为什么重要的系统过程表现出较低的优先级?
、
我还在学习Linux。 作为Linux发行版,Ubuntu具有多任务、并行执行程序的能力。这些程序有进程,在必要时占用系统资源的一部分。 进程调度允许按优先级执行流程,因此高值优先级执行的频率比值较低的优先级高。但令我惊讶的是,这些非常重要的过程实际上表现出了较低的优先级。为什么是这种情况?有什么福利待遇?
浏览 0
提问于2012-06-21
得票数 1
回答已采纳
2
回答
如何在Linux中显示堆栈跟踪?
、
、
我在Solaris10和Linux上使用g++ 4.9.2。我正在使用一个信号处理程序。只要有信号,我就会显示堆栈跟踪。如何在Linux中显示堆栈跟踪?
浏览 6
提问于2017-02-17
得票数 1
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
使用/proc信息跟踪进程的堆栈
Linux下查看CPU信息
查看 Linux 系统中进程和用户的内存使用情况
adb 查看并杀死进程
Linux进程管理
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
实时音视频
活动推荐
运营活动
广告
关闭
领券