我正在寻找一种方法,当一个特定的断点在gdb中命中时做一些动作.
基本上我的程序中有一些memleak.当malloc和free函数命中时,我需要进入函数(步骤)并收集一些基本信息,如addr和size(基本上打印那些值).完成后恢复我的程序.
我们有什么好办法吗?
当我拆卸我的小功能时,我碰巧看到了这个电话
call 0xf60d2f47 <__i686.get_pc_thunk.bx>.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我需要在我的程序中调用此函数.任何解释都会有所帮助.
backtrace函数给出一组回溯如何用函数名/文件名/行号映射它?
for ex:-
backtrace() returned 8 addresses
./libtst.so(myfunc5+0x2b) [0xb7767767]
./libtst.so(fun4+0x4a) [0xb7767831]
./libtst.so(fun3+0x48) [0xb776787f]
./libtst.so(fun2+0x35) [0xb77678ba]
./libtst.so(fun1+0x35) [0xb77678f5]
./a.out() [0x80485b9]
/lib/libc.so.6(__libc_start_main+0xe5) [0xb75e9be5]
./a.out() [0x80484f1]
Run Code Online (Sandbox Code Playgroud)
从上面的堆栈我怎样才能获得文件名和行号?我做了以下事情,但没有运气.如果我错了,请纠正我:)
for ex:-
./libtst.so(fun2+0x35) [0xb77dc887]
0xb77dc887(fun2 addr+offset)-0xb77b6000 (lib starting addr) = 0x26887 (result)
result is no way related to function in nm output.
I used addr2line command:-
addr2line -f -e libtst.so 0xb77dc887
??
??:0
Run Code Online (Sandbox Code Playgroud)
那么,我如何在运行时或运行后解析?提前致谢...
nm:-
00000574 T _init
00000680 t __do_global_dtors_aux
00000700 t frame_dummy
00000737 t __i686.get_pc_thunk.bx
0000073c T myfunc5
000007e7 T fun4
00000837 T fun3 …Run Code Online (Sandbox Code Playgroud) 为什么我们不能使用双指针来表示二维数组?
arr[2][5] = {"hello","hai"};
**ptr = arr;
Run Code Online (Sandbox Code Playgroud)
这里为什么双指针(**ptr)在这个示例中不起作用?
我有一个用C编写的守护进程.我将事件记录在日志文件中,但现在我想在将事件写入日志文件时添加日期和时间.我怎样才能做到这一点?
当前日志文件: -
Event one occurred: result:
Event two occurred: result:
Run Code Online (Sandbox Code Playgroud)
我希望日志文件看起来像: -
Sep 14 11:35:55 Event one occurred: result:
Sep 14 11:35:55 Event two occurred: result:
Run Code Online (Sandbox Code Playgroud)
我的环境是C和Linux.
我有一个问题,我的应用程序在几天/几周后继续倾销核心,但不幸的是,没有产生核心转储.
我们试图设置ulimit -c unlimited没有成功,所以我们setrlimit在代码本身中包含了功能,但也没有运气.最重要的是,我们也添加了MALLOC_CHECK_.
有趣的是,当我们尝试启动手动核心转储(使用kill -ABRT <pid>)时,它确实生成了核心转储.
我可以看到以下消息 /var/log/message
内核:[2302077.396021] myapp [22140]:segfault at 54552e42 ip 00000000f773f36f sp 00000000fffdc48c error 4 in ld-2.11.3.so [f7727000 + 1f000]
环境:sles11
有关如何使应用程序更可靠地生成核心转储的任何建议?
我在一个文件中有一个公共静态变量,如何将相同的变量导出到其他文件?
例如: -
file1.java
public final static int buf = 256;
Run Code Online (Sandbox Code Playgroud)
file2.java
如何在此文件中访问变量"buf"?
多线程应用程序挂起,它没有响应任何命令.我试过没有运气的事情:
有没有什么好方法可以调试这个过程?
我们有一个守护程序服务器程序,它会分配一个孩子.当孩子退出时,父母正在接收SIGTERM信号.所以,我们想知道
1)谁发送了这个SIGTERM?
2)是否SIGTERM只针对父母或其团体?
3)SIGTERM在这种情况下可以生成哪些可能的方法?
4)是否可以屏蔽此SIGTERM信号?如果是,这次电话的副作用是什么?