草庐IT

runtime-gdb

全部标签

linux - 我可以指示 gdb 运行命令以响应 SIGTRAP 吗?

我正在调试基于GObject的应用程序中的引用泄漏。GObject有一个简单的内置机制来帮助解决此类问题:您可以将gobject.c中的g_trap_object_ref变量设置为您关心的对象,然后该对象的每个ref或unref都会命中断点指令(通过G_BREAKPOINT())。果然,程序确实停止了,gdb报告:ProgramreceivedsignalSIGTRAP,Trace/breakpointtrap.g_object_ref(_object=0x65f090)atgobject.c:26062606old_val=g_atomic_int_exchange_and_add(

linux - gdb 无法附加到进程

这是我使用的操作系统:Linuxsecurecluster4.9.8-moby#1SMPWedFeb809:56:43UTC2017x86_64x86_64x86_64GNU/Linux当尝试以root用户身份将gdb附加到挂起进程时,我得到以下信息:Attachingtoprocess9636Couldnotattachtoprocess.Ifyouruidmatchestheuidofthetargetprocess,checkthesettingof/proc/sys/kernel/yama/ptrace_scope,ortryagainastherootuser.Formore

java - 在 Linux 中使用 echo 使用 Runtime.exec 创建文件?

我在Java中使用Runtime.exec时遇到问题,似乎某些命令有效而其他命令无效。例如,如果我运行echosomedata>data.txt在我的终端中,它工作正常,但是如果我尝试使用Java来执行此操作,它就无法工作。RuntimemRuntime=Runtime.getRuntime();ProcessmProcess=mRuntime.exec("echosomedata>data.txt");mProcess.waitFor();有什么原因吗? 最佳答案 echo不是真正的命令,因为它有一个可以运行的二进制文件。它是sh

linux - 在 Linux 上自动启动 gdb

有没有办法在Linux上的gdb下自动启动一个进程?相当于设置ImageFileExecutionOptionsonWindows.我正在尝试调试从另一个进程启动的进程的启动阶段。 最佳答案 我通常会将真正的程序移开,并将其替换为使用相同参数在GDB下启动程序的脚本。#!/bin/bashexecgdb-args"$@"如果由于输出被重定向到文件或其他原因而无法正常工作,请尝试以下操作:#!/bin/bashexecxterm-egdb-args"$@"这应该会给你一个弹出式终端,里面运行着GDB。

Java Runtime.exec() 不从命令行发送电子邮件

我正在创建一个Java应用程序,我想添加的功能之一是向用户发送生成的电子邮件。我已经在我的Macbook上设置了邮件,我可以很好地从命令行发送电子邮件。我在调用runtime.exec()时发送电子邮件时遇到问题。任何人都知道为什么它不会执行和发送电子邮件?Runtimeruntime=Runtime.getRuntime();try{runtime.exec("echoThisisthebody|mail-sSubject-Fmyemail@gmail.com");}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStac

linux - 没有 gcc 的 gdb

是否可以使用用as组装并用ld链接的程序来运行GDB?使用gcc添加标志-g允许调试,但我得到错误Nosymboltableisloaded。当我尝试向加载的程序添加断点时,使用"file"命令。谢谢!编辑也许我应该明确表示我正在学习和编程汇编。我真正想要的只是堆栈跟踪,但能够使用GDB会很棒。解决方案运行as-g即可。谢谢大家的回答!! 最佳答案 这是可能的。但是,您需要符号才能添加符号断点,符号由调试信息提供;确保您的汇编器和链接器提供这些。编辑对于GNUas,使用as-g。或者只使用gcc-g:如果你给它一个.s文件,它会调用

c++ - gdb 核心转储打开失败

我正在尝试打开内核核心转储文件。我得到的是:gdbappcore.23605GNUgdb(GDB)RedHatEnterpriseLinux(7.0.1-32.el5)Copyright(C)2009FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"f

linux - 使用 gdb 在 Qemu 上调试 init

我正在尝试在Qemu上模拟caviumocteon的mips64linux内核。我目前在使用模式init代码方面遇到一些问题,想调试init。我在命令行中使用-s-S选项启动Qemu并运行gdb使用命令ddd--debugger/OCTEON-SDK/tools/bin/mips64-octeon-linux-gnu-gdb/OCTEON-SDK/linux/kernel_2.6/linux/vmlinux然后用命令附加gdb目标远程localhost:1234gdb当前仅显示在内核空间中运行的指令。我想问的是,有什么方法可以像在内核空间中一样逐步调试用户模式初始化和库指令?例如,如果

c - GDB 不会立即中断程序

调试大型C应用程序时,我从gdb看到奇怪的行为:我总是可以按Ctrl+C中断程序:^CProgramreceivedsignalSIGINT,Interrupt.0x76f58964inselect()at../sysdeps/unix/syscall-template.S:8181in../sysdeps/unix/syscall-template.S(gdb)但是,在程序运行足够长的时间(比如>1天)后,我不能再轻易中断程序了。当试图用Ctrl+C中断程序时,gdb只显示^CProgramreceivedsignalSIGINT,Interrupt.并卡在那里几分钟到几小时。如果花

linux - 我如何让 gdb 在 linux 下使用 D 程序?

我有一个打过补丁的gdb6.8,但我无法进行任何调试。鉴于此测试文件:importstd.stdio;voidmain(){floatf=3.0;inti=1;writeln(f,"",i);f+=cast(float)(i/10.0);writeln(f,"",i);i++;f+=cast(float)(i/10.0);writeln(f,"",i);i+=2;f+=cast(float)(i/5.0);writeln(f,"",i);}并尝试在命令行上进行调试:bash-4.0[d]$dmd-gtest.d#'-gc'showsthesamebehaviour.bash-4.0[d