gdb 相关问题

将此标记用于与GDB相关的问题,GDB是GNU软件系统的标准调试器。


c gdb
回答 1 投票 0

IEEE.754在手臂上,组装算法给出意外结果

这是算法到目前为止的样子。此时仅尝试添加

回答 0 投票 0

VSCODE调试器-C ++ - 不起作用。红点变成灰色cirle

Hey有人可以解决IDE内部在IDE内部运行的Vscode GDB调试器的修复程序,不会观察到断点,红点变成了小灰色圆圈。

回答 1 投票 0



/proc/proc/meminfo-Inactive(文件)保持很高,并且无法通过drop_caches

我们在产品中使用Windriver Linux 6.0(基于Yocto 3.10.55)。 而且我们面临一个奇怪的问题: /proc /meminfo中的非活动(文件)仍然很高。即使我们进行Echo 3>/drop/sys/vm/drop_c...

回答 1 投票 0



为GDB便利性变量中保存的价值的符号信息

我经常发现,当我调试程序并获取我遇到的任何正确对齐,指针尺寸的值的符号时,堆叠堆栈很有用。 我已经厌倦了手动做这件事,所以我

回答 2 投票 0

如何知道GDB

有一种方法可以知道GDB调试C代码中的最后一个命中断裂点号。 信息断点/断点命令列出了所有可用的断点,但没有显示突破点...

回答 1 投票 0

GDB与预期的函数名称和地址不同 我试图捕获孩子何时处决流产。 以下是MCVE,应该对我要做的事情有一个了解。 #include

我正在试图捕获孩子何时处决堕胎。 以下是一个MCVE,应该对我要做的事情有一个了解。 #include <iostream> #include <cstdio> #include <iomanip> //to make things legible #include <sys/ptrace.h> #include <sys/wait.h> #include <libunwind-ptrace.h> #include <unistd.h> #include <sys/types.h> using namespace std; int getBacktrace(pid_t pid) { int rv = 0; unw_addr_space_t as = unw_create_addr_space(&_UPT_accessors, 0); if(!as) { return rv; } void *context = _UPT_create(pid); unw_cursor_t cursor; if(unw_init_remote(&cursor, as, context) == 0) { cout << "Abort: " << std::hex << (long)*abort << endl; do { unw_proc_info_t pi; if(unw_get_proc_info(&cursor, &pi) >= 0) { if((long)pi.start_ip == (long)abort) { cout << "abort found!\n"; //do some recovery stuff here.so WIFEXITED won't work and WIFSIGNALED can give a false alarm rv = 1; break; } //Just for fun, let's print the backtrace unw_word_t offset, pc; char sym[4096]; if(unw_get_reg(&cursor, UNW_REG_IP, &pc) != 0) { cout << "Unknown PC\n"; } else { cout << "0x" << std::hex << pc << " "; } if(unw_get_proc_name(&cursor, sym, sizeof(sym), &offset) != 0) { cout << "<unknown>\n"; } else { cout << sym << "+0x" << std::hex << offset << endl; } cout << "\tfunction range: " << std::hex << pi.start_ip << "-" << pi.end_ip << endl; } }while(unw_step(&cursor) > 0); cout << endl << endl; //Add spacing to make it easier to read. } if(context) { _UPT_destroy(context); } cout << std::dec; return rv; } int childFunction() { //This is just an example function maybe it throws maybe it doesn't sleep(5); throw 42; } int main() { pid_t childPid; if((childPid = fork()) == 0) { ptrace(PTRACE_TRACEME, 0, nullptr, nullptr); //child childFunction(); } else { while(true) { waitpid(childPid, nullptr, 0); if(getBacktrace(childPid)) { //do some logging or functionality here cout << "Child aborted\n"; break; } ptrace(PTRACE_CONT, childPid, nullptr, nullptr); } } } ,无论如何,我的输出类似于以下内容: Abort: 3fffac87c3b8 0x3fffac6e4bc0 <unknown> function range: 3fffac6e4a70-3fffac6e4c30 0x3fffac6c9540 <unknown> function range: 3fffac6c92f8-3fffac6c95a0 0x3fffaca9e338 <unknown> function range: 3fffaca9e1f0-3fffaca9e434 0x3fffaca9a964 <unknown> function range: 3fffaca9a940-3fffaca9a988 0x3fffaca9aa28 <unknown> function range: 3fffaca9aa10-3fffaca9aa38 0x3fffaca9af18 <unknown> function range: 3fffaca9aea0-3fffaca9af28 0x12af30a88 <unknown> function range: 12af30a38-12af30a98 0x12af30af0 <unknown> function range: 12af30a98-12af30b98 0x3fffac6c98c4 <unknown> function range: 3fffac6c9770-3fffac6c9a34 0x3fffac6c9ae0 <unknown> function range: 3fffac6c9a40-3fffac6c9aec 我知道,从顶部的第二帧是流产。但是,这些地址都没有匹配。 如果我与GDB进行调试,我明白了: [1 我有几个问题: 为什么GDB而不是显示__GI_abort而不是显示为函数名称? 我如何得到abort的地址?我只是尝试将其交换__GI_abort,但是G ++声称它没有声明。 为什么GDB而不是显示__gi_abort而不是堕胎为函数名称? 这些是彼此的别名(请注意,它们处于同一地址): abort您无法使用readelf -Ws glibc-build/libc.so | grep 'abort$' 7155: 0000000000024ec0 116 FUNC LOCAL DEFAULT 15 __GI_abort 7947: 0000000000024ec0 116 FUNC GLOBAL DEFAULT 15 abort 符号,因为它是本地的__GI_abort。 在我的Linux系统libc.so.6系统中,您的MCVE可以工作,而我没有立即发现任何问题。 x86_64

回答 1 投票 0

关于Core/Coredump和GDB(用于诊断Segfault)

background:在CentOS 8.5机器上测试Apache实例时,我会遇到问题,但是一旦向其发送请求,它将显示一个段...

回答 1 投票 0




GDB最多但并非全部源文件

出于某种原因,即使使用相同的汇编目录,GDB也只找到了源文件的子集 例如: #12 0xb5bf6b90 in Services :: DCS :: NetworkDomainCollector :: AddDomain(...)

回答 1 投票 0

可以将由比特菲尔德组成的结构施放到相同长度的无符号int上,以将其打印在GDB中? 在Google上,我有2个结果,所以我没有找到可以回答我的问题。我在Google上搜索了“ GDB Cast struct到Unsigned Int C”,结果没有添加...

typedef struct L1_valid_entry{ uint32_t PXN:1; uint32_t index_1:1; uint32_t C_B:2; uint32_t XN:1; uint32_t DOMAIN:4; uint32_t IMPL:1; uint32_t AP_11_10:2; uint32_t TEX_14_12:3; uint32_t AP_15:1; uint32_t nG_S:2; uint32_t zero:1; uint32_t NS_19:1; uint32_t base_address:12; }L1_valid_entry;

c gdb
回答 1 投票 0



最新问题
© www.soinside.com 2019 - 2025. All rights reserved.