小编atv*_*atv的帖子

python:列表索引超出范围错误

我写了一个简单的python程序

l=[1,2,3,0,0,1]
for i in range(0,len(l)):
       if l[i]==0:
           l.pop(i)
Run Code Online (Sandbox Code Playgroud)

这给了我错误'列表索引超出范围'在线 if l[i]==0:

经过调试后,我可以发现i它正在增加并且列表正在减少.
但是,我有循环终止条件i < len(l).那我为什么会收到这样的错误呢?

python list

33
推荐指数
4
解决办法
64万
查看次数

gprof:如何为链接到主程序的共享库中的函数生成调用图

我正在研究Linux环境.我有两个'C'源包train和test_train.

  1. 编译时训练包生成libtrain.so
  2. test_train链接到libtrain.so并生成可执行的train-test

现在我想用gprof生成一个调用图,它显示了主程序中函数的调用顺序以及libtrain.so中的函数调用顺序.

我正在使用-pg选项编译和链接两个包,调试级别为o0.在我执行./train-test之后,生成gmon.out.然后我做:

$ gprof -q ./train-test gmon.out
Run Code Online (Sandbox Code Playgroud)

这里,输出显示列车测试中的函数调用图,但不显示libtrain.so中的调用图

可能是什么问题呢 ?

c debugging profiling gprof sprof

23
推荐指数
1
解决办法
2万
查看次数

符号etext,edata和end定义在哪里?

这是来自Linux手册页的代码:

#include <stdio.h>
#include <stdlib.h>

extern char etext, edata, end;

int main() {
    printf("First address past:\n");
    printf("    program text (etext)      %10p\n", &etext);
    printf("    initialized data (edata)  %10p\n", &edata);
    printf("    uninitialized data (end)  %10p\n", &end);

    exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)

运行时,下面的程序产生如下输出:

$ ./a.out
First address past:
    program text (etext)       0x8048568
    initialized data (edata)   0x804a01c
    uninitialized data (end)   0x804a024
Run Code Online (Sandbox Code Playgroud)

在哪里etext,edata end界定?如何为这些符号赋值?它是由链接器还是别的?

c linker gcc ld

17
推荐指数
3
解决办法
7068
查看次数

在多核或分布式系统上编译程序

Linux中是否有任何软件可以在多核或分布式系统上并行编译包含大量文件的源代码.像gcc或xserver这样的库需要很长时间才能在unicore/dual机器上进行编译,而且大多数情况下,当你需要大量的重新编译时它会令人沮丧.是否有任何并行编译此类源代码的技术?

linux makefile

17
推荐指数
1
解决办法
2万
查看次数

malloc()和堆内存

我在以下C代码中得到一个奇怪的结果.

int main()
{
    int *p = (int *) malloc(100);
    p[120] = 5;
    printf("\n %d", p[120]);
}
Run Code Online (Sandbox Code Playgroud)

由于我只分配了100个字节,因此该代码应该导致分段错误.但是,它打印'5'并且不会给出任何运行时错误.有人可以解释原因吗?

c memory

5
推荐指数
2
解决办法
7886
查看次数

标签 统计

c ×3

debugging ×1

gcc ×1

gprof ×1

ld ×1

linker ×1

linux ×1

list ×1

makefile ×1

memory ×1

profiling ×1

python ×1

sprof ×1