小编mez*_*zda的帖子

Tracepoint无法在gdb中运行,并显示"Trace只能在远程目标上运行"

我想使用跟踪点来调试我有完全访问权限的本地计算机上的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

gdb

4
推荐指数
1
解决办法
3471
查看次数

编译器如何在c中评估sizeof运算符

虽然在这个论坛上已经提出了几个问题以及其他与sizeof运算符相关的问题,但我无法得到关于编译器如何评估sizeof运算符以查找任何数据类型,变量,指针,数组等的大小的任何答案.如果可能的话也指向我一些链接可以帮助我详细了解这一点.任何帮助将不胜感激.谢谢.

c c++ compiler-construction sizeof

3
推荐指数
1
解决办法
2515
查看次数

在小型c程序中获得分段错误

我写了一个小编:

  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行的这两种不同方式之间有什么区别.任何帮助将不胜感激.谢谢.

c

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

错误:从'char*'转换为'unsigned int'会失去精度

我正在编译代码,它在以下函数中给出了错误:

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",则编译可以正常运行,但是在运行程序时我没有得到预期的结果.有关如何解决此问题的任何想法?

c c++ pointers

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

在C编程中,为什么char a = -1与unsigned char b = -1不同

我在下面写了一个小程序.

#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/但我无法得到答案.任何帮助将不胜感激.谢谢.

c

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

重新排列n列中的文件内容

我有一个内容为:

        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可以在这里服务吗?谢谢.

linux bash shell

0
推荐指数
1
解决办法
133
查看次数

strtoul给出意想不到的输出

我试图使用该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 …

c strtol

-1
推荐指数
1
解决办法
404
查看次数

如何在C中不使用sizeof来查找指针的大小

可能重复:
如何使用sizeof查找变量的大小

使用C,我们可以在不使用sizeof运算符的情况下以某种方式找到指针的大小吗?虽然我在google搜索时在很多地方发现了这个问题,但我找不到任何答案.任何帮助将不胜感激.谢谢

c sizeof

-2
推荐指数
1
解决办法
5182
查看次数

标签 统计

c ×6

c++ ×2

sizeof ×2

bash ×1

compiler-construction ×1

gdb ×1

linux ×1

pointers ×1

shell ×1

strtol ×1