相关疑难解决方法(0)

我的程序崩溃时如何自动生成堆栈跟踪

我正在使用GCC编译器在Linux上工作.当我的C++程序崩溃时,我希望它能自动生成一个堆栈跟踪.

我的程序由许多不同的用户运行,它也可以在Linux,Windows和Macintosh上运行(所有版本都使用编译gcc).

我希望我的程序能够在崩溃时生成堆栈跟踪,并且在用户下次运行它时,它会询问他们是否可以将堆栈跟踪发送给我,以便我可以追踪问题.我可以处理向我发送信息,但我不知道如何生成跟踪字符串.有任何想法吗?

c++ crash gcc assert stack-trace

561
推荐指数
20
解决办法
33万
查看次数

警告:禁用地址空间随机化时出错:不允许操作

我做错了什么(或没做错)gdb对我来说不合适?

root@6be3d60ab7c6:/# cat minimal.c 
int main()
{
  int i = 1337;
  return 0;
}
root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal
root@6be3d60ab7c6:/# gdb minimal
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
.
.
.
Reading symbols from minimal...done.
(gdb) break main
Breakpoint 1 at 0x4004f1: file minimal.c, line 3.
(gdb) run
Starting program: /minimal 
warning: Error disabling address space randomization: Operation not permitted
During startup program exited normally.
(gdb) 
(gdb) print i   
No symbol "i" in current context.
Run Code Online (Sandbox Code Playgroud)

c gdb docker

65
推荐指数
3
解决办法
2万
查看次数

GDB忽略了我的断点

我的测试用例非常简单,我必须做一些非常愚蠢的事情.我写了一个简单的源文件test.c:

#include<stdio.h>

int main(int argc,char* argv[]){
    printf("1\n");
    printf("2\n");
    printf("3\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我用它编译gcc -g test.c并启动了GDB gdb a.out.然后我main用with 创建了一个断点break main并运行它run(也试过start) - 但是GDB只是忽略了我的断点!

这是我尝试编译test.c和运行GDB 的shell会话:

[idanarye@idanarye_lg gdbtest]$ gcc -g test.c
[idanarye@idanarye_lg gdbtest]$ gdb a.out
GNU gdb (GDB) 7.6.1
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There …
Run Code Online (Sandbox Code Playgroud)

gdb

10
推荐指数
1
解决办法
4891
查看次数

在 Docker 内部运行时,GDBServer 未启动或侦听端口

我试图在 Docker 容器内编译一个“hello world”Rust 程序,然后使用 GDBServer 和 CLion 远程调试它,但我认为gdbserver启动不正确。当我启动它时,我没有收到我期望的“进程已启动”和“正在侦听端口...”消息;我什么也没得到。

我已经在家庭网络上使用 Raspberry Pi 成功完成了此操作,但在使用 Docker 时无法使其工作。

我的最终目标是在 Digital Ocean Droplet 上部署此 Docker 容器,并从本地计算机进行远程调试。目前,我已在本地计算机上运行 Docker。

我正在 Mac (Mojave) 上工作,运行 Docker (v18.09),并启动一个 Docker 容器,该容器是使用 Rust 构建的 Debian 镜像并gdbserver安装了. GDBServer 和 Rust 通过以下方式安装:

# install curl (needed to install rust)
apt-get update && apt-get install -y curl gdb g++-multilib lib32stdc++6 libssl-dev libncurses5-dev

# install rust + cargo nightly
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly …
Run Code Online (Sandbox Code Playgroud)

debugging gdbserver rust docker clion

6
推荐指数
1
解决办法
4900
查看次数

标签 统计

docker ×2

gdb ×2

assert ×1

c ×1

c++ ×1

clion ×1

crash ×1

debugging ×1

gcc ×1

gdbserver ×1

rust ×1

stack-trace ×1