当前位置: 首页 > 面试题库 >

在GDB中调试多线程程序时,如何一次继续一个线程?

秦禄
2023-03-14
问题内容

我有一个使用两个线程的程序。我已经在两个线程中都设置了断点。在gdb下运行程序时,我想在线程之间切换并使其运行。(线程t1是活动的并且正在运行,线程t2;在断点处暂停时。我想停止T1的运行并运行T2)。

有什么办法可以安排gdb中的线程?


问题答案:

如果您使用的是GDB 7或更高版本,请尝试“不间断模式”。

http://sourceware.org/gdb/current/onlinedocs/gdb/Non_002dStop-
Mode.html

前面提到的“ scheduler-locking
on”命令允许您在一个线程停止其他线程的情况下执行一个线程。不间断模式使您可以在一个线程处于活动状态的同时步进一个线程。



 类似资料:
  • 我如何启动两个线程,其中thread1首先执行,thread2在thread1结束时启动,而主方法线程可以在不锁定其他两个线程的情况下继续工作? 我尝试了join(),但是它需要从线程调用,线程必须等待另一个线程,没有办法执行类似thread2.join(thread1)的操作;因此,如果我在main()中调用join,我将有效地停止主线程的执行,而不仅仅是Thread2的执行。 #编辑:为什么我

  • a.c: #include <stdio.h> int func(int a, int b) { int c = a * b; printf("c is %d\n", c); } int main(void) { func(1, 2); return 0; } b.c: #include <stdio.h> int func1

  • 我试着运行一个程序,使用线程显示带有数字的乘法、除法、加法和减法表。 但是我希望数字被乘以或相加等。由用户选择。 也就是说,程序应该在用户为每个操作选择一个数字后运行,然后显示结果。

  • 问题内容: 我有以下结构: 该方法 可以 被许多线程同时调用。该 会 抛出异常(它在后台,可能成为过时的使用一些数据)。 如果引发异常,则执行一些耗时的任务,比如说“更新”所有当前数据,并且我可以调用。 问题: 如何确保只调用 一次 ?如果我在的条目中放置了原子标志,则不能确定何时清除该标志。 我该如何解决?请注意:由于它是一个外部API,因此我无法修改,并且我正在使用装饰器模式来使用它。 问题答

  • 这里我用java开发。 我有一个for循环中的线程,我想连续运行5次。不幸的是,循环在第二次运行时停止,出现了一个错误: 异常在线程"main"java.lang.IllegalThreadStateExctive在java.base/java.lang.Thread.start(Thread.java:793) 我知道这个错误是什么意思,但是我要求他在确定完成线程时恢复循环,这样就不会有任何错误

  • 如何修复我的线程以安排线程的初始延迟2分钟并且不要再次安排它。(即,仅安排一次)