草庐IT

c - 调试时,单线程应用程序会在内核之间跳转吗?

我正在尝试使用EclipseCDT调试多架构OSS程序(沙箱配置下的Dasu-boot引导加载程序-它生成标准的linux可执行文件)。我喜欢它呈现事物的方式(出色的GUI工作!)。例如,它为线程显示类似这样的内容,Thread[1]9480[core:2](Suspend:Step)当我运行程序时,“核心编号”会发生变化(在Inteli3上运行时,值介于0和3之间)。这最初让我相信调试器向我展示了应用程序的不同处理上下文(即我认为它在所有4个处理器内核上运行)。我花了很多时间尝试安装“多核gbd调试器”并进行配置,但最后不得不承认失败。当我在一个周末后回到这个问题时,我注意到虽然“核

linux - 如何仅使用 ptrace (linux, x86/x86_64) 获取 "backtrace"(如 gdb)

我想像gdb一样得到类似backtrace的输出。但我想通过ptrace()直接执行此操作。我的平台是Linux,x86;以及后来的x86_64。现在我只想从堆栈中读取返回地址,而不转换为符号名称。所以,对于测试程序,通过gcc-4.5以-O0方式编译:intg(){kill(getpid(),SIGALRM);}intf(){inta;intb;a=g();b=a;returna+b;}inte(){intc;c=f();}main(){returne();}我将启动一个我的程序,并在一开始就连接ptrace来测试程序。然后,我将执行PTRACE_CONT并等待信号。测试程序何时会进

linux - 如何仅使用 ptrace (linux, x86/x86_64) 获取 "backtrace"(如 gdb)

我想像gdb一样得到类似backtrace的输出。但我想通过ptrace()直接执行此操作。我的平台是Linux,x86;以及后来的x86_64。现在我只想从堆栈中读取返回地址,而不转换为符号名称。所以,对于测试程序,通过gcc-4.5以-O0方式编译:intg(){kill(getpid(),SIGALRM);}intf(){inta;intb;a=g();b=a;returna+b;}inte(){intc;c=f();}main(){returne();}我将启动一个我的程序,并在一开始就连接ptrace来测试程序。然后,我将执行PTRACE_CONT并等待信号。测试程序何时会进

linux - gdb是否临时给页面写权限?

我正在调试Linux应用程序中的段错误,该错误是由试图更改静态常量数组结构的程序引起的(因此数据位于ELF的只读部分,随后加载到页面中授予只读权限)。在GDB中,我在执行错误存储的汇编程序行上放置了一个断点,当它停在那里时,我使用GDB手动执行了等效的写入操作。GDB毫无怨言地做到了这一点,读回的值证明它确实已经被写入。我查看了/proc/thepid/maps,那个特定的页面仍然被标记为“不可写”。所以我的问题是:GDB是否临时在只读页上设置写权限,执行写,然后重新设置权限?谢谢。 最佳答案 doesGDBtemporarilys

linux - gdb是否临时给页面写权限?

我正在调试Linux应用程序中的段错误,该错误是由试图更改静态常量数组结构的程序引起的(因此数据位于ELF的只读部分,随后加载到页面中授予只读权限)。在GDB中,我在执行错误存储的汇编程序行上放置了一个断点,当它停在那里时,我使用GDB手动执行了等效的写入操作。GDB毫无怨言地做到了这一点,读回的值证明它确实已经被写入。我查看了/proc/thepid/maps,那个特定的页面仍然被标记为“不可写”。所以我的问题是:GDB是否临时在只读页上设置写权限,执行写,然后重新设置权限?谢谢。 最佳答案 doesGDBtemporarilys

linux - 不同服务器上的 Eclipse cdt 远程构建和远程调试

有类似的问题,但我找不到这个特定的场景:计算机A-Linux构建服务器计算机B-Linux调试服务器计算机C-Windows,我的本地计算机。我有一个c/c++项目-eclipsecdt。我可以在计算机C上编辑源文件,在计算机A上构建并传输到计算机B,然后通过我的本地项目进行调试吗?我如何使用Eclipse的现有工具/配置来做到这一点? 最佳答案 作为第一步,您可能想尝试gdbserver:RemotedebuggingwithEclipseCDT或BettervariableexploringwhendebuggingC++cod

linux - 不同服务器上的 Eclipse cdt 远程构建和远程调试

有类似的问题,但我找不到这个特定的场景:计算机A-Linux构建服务器计算机B-Linux调试服务器计算机C-Windows,我的本地计算机。我有一个c/c++项目-eclipsecdt。我可以在计算机C上编辑源文件,在计算机A上构建并传输到计算机B,然后通过我的本地项目进行调试吗?我如何使用Eclipse的现有工具/配置来做到这一点? 最佳答案 作为第一步,您可能想尝试gdbserver:RemotedebuggingwithEclipseCDT或BettervariableexploringwhendebuggingC++cod

python - 在 gdb 中加载 python 支持

我遇到了在gdb中运行特定于python的命令的问题。我已经获得了一般的python支持:(gdb)pythonprint(True)True我已经安装了标准脚本:$ls/usr/share/gdb/python/gdb/commandFrameDecorator.pyFrameIterator.pyframes.pyfunction__init__.pyprinterprinting.pyprompt.py__pycache__types.pyunwinder.pyxmethod.py我确保所有路径都已启用加载:$cat~/.gdbinitadd-auto-load-safe-pat

python - 在 gdb 中加载 python 支持

我遇到了在gdb中运行特定于python的命令的问题。我已经获得了一般的python支持:(gdb)pythonprint(True)True我已经安装了标准脚本:$ls/usr/share/gdb/python/gdb/commandFrameDecorator.pyFrameIterator.pyframes.pyfunction__init__.pyprinterprinting.pyprompt.py__pycache__types.pyunwinder.pyxmethod.py我确保所有路径都已启用加载:$cat~/.gdbinitadd-auto-load-safe-pat

c - DDD 替代方案,它也绘制了数据结构的漂亮图片

除了DDD之外,还有什么可以绘制我的数据结构图,就像在Linux上运行的DDD一样吗?ddd可以运行,只是有一种陈旧笨拙的感觉,只是想探索替代方案(如果有的话)。这张图片的顶部网格就是我要说的: 最佳答案 不介意看看here(GDB前端列表)?我建议此列表应该有用。 关于c-DDD替代方案,它也绘制了数据结构的漂亮图片,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1701521