我用C编写了一个shell。在它上运行一些程序时出现了一些问题。如何在gdb中调试shell时在shell上运行程序?正在运行另一个程序的调试程序
回答
首先使用-g
选项来编译调试标志,用于gdb
。
然后运行。
gdb shellapp
...
run someapps
...
对于快速阅读How to Debug C Program using gdb in 6 Simple Steps和GDB Tutorial
它需要编译程序使用'-g' –
嗨Grijesh,感谢编辑;) –
:)你的欢迎。 –
您可以通过gdb附加到已经从另一个控制台运行的shell进程。这样你的shell输出不会干扰gdb输出,并且你可以照常在shell中运行程序。
- 运行你的shell执行在第1控制台窗口
- 打开第二个控制台,找到使用
ps
命令 开始
gdb
在第二个控制台和attach壳已经运行壳的PID号使用它就像PID号这样的::〜$ GDB -q
(GDB)连接3479
附加到进程3479现在你可以设置断点,并继续shell执行:
(GDB)b SomeFunction
(GDB)C
继续。
从这一点来说,你有2个控制台:
- 的一个地方你的shell运行
- 和第二地方
gdb
运行安装到外壳
您可以使用shell像往常一样:在其上运行其他程序或执行其他任何操作。同时您可以在gdb
内的第二个控制台中观察shell执行情况。重点是这两个进程的输出是相互分离的,如果你只在一个控制台中直接在gdb中运行shell,那么这是不可能的。
- 1. “正在调试的程序未运行。”
- 2. 调用另一个程序在我的IDL程序中运行
- 3. 调试器错误:正在调试的程序未运行
- 4. 编写一个程序来运行另一个书面程序
- 5. 从另一个程序或终端中断正在运行的C++程序
- 6. 读取另一个正在运行的.NET程序的属性
- 7. 在另一个程序中运行程序?
- 8. 在另一个程序中运行UNIX程序
- 9. 如何运行一个程序,如果另一个程序正在运行c#或.bat
- 10. 运行另一个C++程序的C++程序
- 11. Java:最后运行另一个程序
- 12. 使用Python运行另一个程序
- 13. mysql调用另一个程序(另一个模式)从程序
- 14. BAT关闭程序,如果另一个正在运行
- 15. 如何编写一个C程序,该程序在被调用时运行另一个给定的程序并试图控制子进程的行为
- 16. 如何在Linux中调试正在运行的C++程序?
- 17. 在另一个程序中调用一个程序
- 18. 程序调试时运行正常,但运行通常
- 19. 获取I /从另一个java程序运行Java程序Ø
- 20. 从另一个java程序运行RMI程序
- 21. 从另一个程序集运行WPF应用程序
- 22. 运行Java程序到另一个程序
- 23. 如何从另一个java程序运行java程序?
- 24. 从另一个程序运行外部程序Linux或cygwin
- 25. 从C#安装程序安装程序运行另一个MSI
- 26. 从另一个Java程序运行java程序
- 27. 如何从C++程序运行另一个程序
- 28. 无法从另一个Java程序运行java程序
- 29. 运行不是我正在调试的应用程序?
- 30. Xcode“正在调试的程序未运行”错误
在这里发表问题之前,应该做一些努力。 –