我想使用跟踪点来调试我有完全访问权限的本地计算机上的prog.我能够设置tracepoint及其passcount,并使用info tr给我
(gdb)info tr
Num Enb地址PassC StepC什么
1 y 0x080b7529 2 0在tcp_pkt.c:412的search_tcp中
跟踪点1的操作:收集流端
然后我运行prog,它像往常一样运行,最后当我给tfind或tdump收集它显示的所需数据时:
(gdb)tfind 1
跟踪只能在远程目标上运行.
(gdb)tdump
跟踪只能在远程目标上运行.
即使我尝试使用"tstart",但它再次显示"Trace只能在远程目标上运行."
知道这条消息是什么意思吗?目前不支持tracepoing使用吗?或者是用于调试局域网或其他网络上的某些远程机器?任何帮助将不胜感激.
谢谢vikas
虽然在这个论坛上已经提出了几个问题以及其他与sizeof运算符相关的问题,但我无法得到关于编译器如何评估sizeof运算符以查找任何数据类型,变量,指针,数组等的大小的任何答案.如果可能的话也指向我一些链接可以帮助我详细了解这一点.任何帮助将不胜感激.谢谢.
我写了一个小编:
1 #include<stdio.h>
2 main(){
3 char* str = "string";
4 *str = 'k';
5 printf("string is = %s\n",str);
6 }
Run Code Online (Sandbox Code Playgroud)
编译该程序时没有任何错误或警告,但是当我运行它时,它会给出分段错误.如果我将第3行重写为:char str [] ="string"; 这个程序工作得很好.任何人都可以让我知道这里有什么问题??? 编写第3行的这两种不同方式之间有什么区别.任何帮助将不胜感激.谢谢.
我正在编译代码,它在以下函数中给出了错误:
inline char *align(char *var, DataType_e type)
{
return (DataTypeSize[type] == 0) ? var :
(char*) (((unsigned int)(var) + DataTypeSize[type]-1) /
DataTypeSize[type] * DataTypeSize[type]);
}
Run Code Online (Sandbox Code Playgroud)
以下错误符合"(unsigned int)(var)":
error: cast from 'char*' to 'unsigned int' loses precision
Run Code Online (Sandbox Code Playgroud)
如果我将"unsigned int"更改为"unsigned long",则编译可以正常运行,但是在运行程序时我没有得到预期的结果.有关如何解决此问题的任何想法?
我在下面写了一个小程序.
#include <stdio.h>
main(){
char a=-1;
unsigned char b=-1;
printf("%d %d\n",a,b);
printf("%x %x\n",a,b);
if(a==b) printf("equal\n");
else printf("not equal\n");
}
Run Code Online (Sandbox Code Playgroud)
prog的输出是:
-1 255
ffffffff ff
not equal
Run Code Online (Sandbox Code Playgroud)
因为char只有一个字节而-1用2的补码形式表示,我认为0xff将存储在a和b中,因此两者应该相等.任何人都可以让我知道为什么他们是不同的,为什么十六进制的命令是0xffffffff而不是0xff.我有一个相关的链接http://embeddedgurus.com/stack-overflow/2009/08/a-tutorial-on-signed-and-unsigned-integers/但我无法得到答案.任何帮助将不胜感激.谢谢.
我有一个内容为:
000000000000000000000000
00000000000000000000000000000000
0000000000000000000000001f000000
01000000060000000000000034000000
3f000000000000000000000004000000
000000001b0000000900000000000000
00000000600300001000000009000000
010000000400000008000000
Run Code Online (Sandbox Code Playgroud)
我想通过指定col的数量来重新排列其内容.例如,如果我说col的值为80,则输出应该是:
00000000000000000000000000000000000000000000000000000000000000000000000000000000
1f000000010000000600000000000000340000003f00000000000000000000000400000000000000
1b000000090000000000000000000000600300001000000009000000010000000400000008000000
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个 ?xxd可以在这里服务吗?谢谢.
我试图使用该strtoul函数,但如下所示它返回一个意外的值(在开头添加ff):
#include <stdio.h>
#include <string.h>
#include <limits.h>
main() {
unsigned long temp ;
char *err;
temp = strtoul("3334444444",&err,10);
if (temp > UINT_MAX) {
printf("%lx %x %x\n",temp,3334444444,UINT_MAX);
}else
printf("%lx %x\n",temp,3334444444);
}
$./a.out
ffffffffc6bf959c c6bf959c ffffffff
Run Code Online (Sandbox Code Playgroud)
上面的输出对应于正确的if部分,但我希望这else部分在这里执行.任何人都可以解释为什么strtoul这样做?为什么它会回归ffffffffc6bf959c而不仅仅是c6bf959c?如果我使用"333444444"(即只少一个4)而不是"3334444444"上面的代码,那么我得到13dff55c 13dff55c对应于该else部分的正确输出(即).
Note : As pointed by melpomene in his reply below, stdlib.h header file should have been included and that will resolve the issue. Can …
可能重复:
如何使用sizeof查找变量的大小
使用C,我们可以在不使用sizeof运算符的情况下以某种方式找到指针的大小吗?虽然我在google搜索时在很多地方发现了这个问题,但我找不到任何答案.任何帮助将不胜感激.谢谢