相关疑难解决方法(0)

如何使用shebang(即#!)为awk使用多个参数?

我想用shebang 执行一个gawk脚本--re-interval."幼稚"的方法

#!/usr/bin/gawk --re-interval -f
... awk script goes here
Run Code Online (Sandbox Code Playgroud)

不起作用,因为gawk是用第一个参数调用的"--re-interval -f"(不是在空白处分开),它不明白.有解决方法吗?

当然你可以不直接调用gawk,而是将它包装成一个分割第一个参数的shell脚本,或者创建一个shell脚本,然后调用gawk并将脚本放到另一个文件中,但我想知道是否有某种方法可以做这在一个文件中.

shebang行的行为因系统而异 - 至少在Cygwin中它不会通过空格分割参数.我只关心如何在一个行为类似的系统上做到这一点; 该脚本不是便携式的.

unix shell awk shebang gawk

114
推荐指数
5
解决办法
3万
查看次数

为什么GDB在行之间无法预测地跳转并将变量打印为"<value optimized out>"?

任何人都可以解释gdb的这种行为吗?

900         memset(&new_ckpt_info,'\0',sizeof(CKPT_INFO));
(gdb)
**903         prev_offset   = cp_node->offset;**
(gdb)
**905         m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb->shm_addr.ckpt_addr+sizeof(CKPT_** HDR),i_offset);
(gdb)
**903         prev_offset   = cp_node->offset;**
(gdb)
**905         m_CPND_CKPTINFO_READ(ckpt_info,(char *)cb->shm_addr.ckpt_addr+sizeof(CKPT_ HDR),i_offset);**
(gdb)
**908         bitmap_offset  = client_hdl/32;**
(gdb)
**910         bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
**908         bitmap_offset  = client_hdl/32;**
(gdb)
**910         bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
**908         bitmap_offset  = client_hdl/32;**
(gdb)
**910         bitmap_value = cpnd_client_bitmap_set(client_hdl%32);**
(gdb)
913         found = cpnd_find_exact_ckptinfo(cb , &ckpt_info , bitmap_offset , &offset , &prev_offset);
(gdb)
916         if(!found)
(gdb) p found
$1 = <value optimized out>
(gdb) set found=0 …
Run Code Online (Sandbox Code Playgroud)

c compiler-construction optimization gdb compilation

83
推荐指数
7
解决办法
10万
查看次数

自动化GDB调试会话的最佳方法是什么?

GDB是否有内置的脚本机制,我应该编写一个期望脚本,还是有更好的解决方案?

我每次都会发送相同的命令序列,我会将每个命令的输出保存到文件中(最有可能使用GDB的内置日志记录机制,除非有人有更好的想法).

scripting automation gdb expect

64
推荐指数
3
解决办法
7万
查看次数

调用gdb以自动将参数传递给正在调试的程序

我想编写一个脚本(在某些条件下)将执行gdb并自动运行一些带有一些参数Y的程序X.一旦程序执行完毕,用户应该保持在gdb的提示符下,直到他/她显式退出它.

执行此操作的一种方法是让脚本将run命令加参数Y输出到某个文件F,然后让脚本调用gdb,如下所示:

gdb X < F
Run Code Online (Sandbox Code Playgroud)

但有没有办法在不引入临时文件的情况下执行此操作?

谢谢.

shell gdb

38
推荐指数
4
解决办法
5万
查看次数

将shell的输出重定向/存储到GDB变量中?

我想知道如何知道GDB中的当前系统架构并将此信息存储到变量中以供以后评估.

就像是:

set variable $x=`shell uname -m`
Run Code Online (Sandbox Code Playgroud)

shell gdb

24
推荐指数
1
解决办法
3378
查看次数

如何在GDB中自动打印下N行?

我一直试图找到一种方法来自动化GDB中跟踪程序控制流程的进度.

即使只是一种自动执行n命令的简单方法,您也可以查看调用例程的顺序.

我意识到你可以发出n xx是GDB逐步执行的次数的问题,但问题在于它显示的是命令而不是例程的地址!但是如果你n在GDB中手动按下(然后按回车键发出上一个命令),它会显示地址.

我在GDB中尝试了以下内容:

(after setting a breakpoint at say 0x0123456)
b *0x0123456
Run Code Online (Sandbox Code Playgroud)

GDB说<breakpoint 1 at 0x123456>.我键入:

commands 1
n 1000
c
end
Run Code Online (Sandbox Code Playgroud)

但它没有按预期循环,也没有显示地址位置:-(.

任何帮助,将不胜感激!当然必须简单的自动登录命令例程被调用??

trace gdb dynamic call-graph control-flow

16
推荐指数
4
解决办法
2万
查看次数

如何追踪XS .so文件?

我有一个小的Perl程序.该程序加载一个模块.该模块使用XSLoader加载.so文件.这个Perl在Linux上运行,用gcc构建-DDEBUGGING,随后是.so文件.我可以重新编译.

执行Perl程序时,如何跟踪.so文件中的C函数?我需要按照它们运行的​​顺序知道函数的名称.拥有函数参数也会很好.

debugging perl trace shared-libraries xs

13
推荐指数
1
解决办法
390
查看次数

GDB:自动'下一步'?

这一次很快.

是否有可能(除了永远按下输入)gdb不断next通过程序逐行查找错误发生的位置?

编辑:continue不是我想要的; 我想有效地看到完整的程序执行,一行一行,就像你next一遍又一遍地得到的那样.

c debugging gdb

8
推荐指数
1
解决办法
2741
查看次数