如何以编程方式在C或C++代码中设置一个断点,以便在Linux上为gdb工作?
即:
int main(int argc, char** argv)
{
/* set breakpoint here! */
int a = 3;
a++; /* In gdb> print a; expect result to be 3 */
return 0;
}
我有一个用C语言编写并在Linux上运行的程序,它每隔大约16毫秒从串口设备获取一次流数据。这是一段对时间要求很高的代码,运行良好。另一段代码也实时地绘制这些数据,但它的及时执行对我来说没有数据采集部分那么重要。也就是说,我不想等到所有的绘图和绘图功能都完成后才再次轮询串口。因此,我在考虑让一个单独的线程来完成应用程序的绘图部分,或者让数据采集部分成为单独的线程。当涉及到低级编程时,我真的几乎没有经验,所以有人能给我指出正确的方向吗?我正在使用的伪代码看起来像这样:
int xyz; // global variable
int main() {
do_some_preliminary_s
在无法在中找出我的应用程序中发生了什么之后,我尝试在我的pc上复制它,使用valgrind来查找内存/多线程问题。我在很多地方看到过这样的情况:
==769== Possible data race during write of size 4 at 0xACD3ADC by thread #13
==769== Locks held: none
==769== at 0x4C36067: memset (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
==769== by 0x4E4570D: pthread_cre
我有一个程序,希望更多地提高运行时性能。
let a = 1;
let b = 2;
let c = a + b;
let d = c + 2;
let e = 3;
let f = c + d;
let g = a + e;
步骤1:因为a,b和e是独立的,所以我想并行地执行它们(不同的核心)。
步骤2:由于c依赖于a,而b;g依赖于a和e,但c和g是相互独立的,因此在步骤1之后执行c和g,但并行执行。
步骤3:因为d依赖于c,所以它们在步骤2之后执行。
步骤4:因为f依赖于c和d,所以它在步骤3之后执行。
我们能用C来实现这一目标吗?或者任何编程语言都支持这一点吗?