我是CS的高级专业,我不知道如何进行调试.没有在我的课程中他们教学/显示调试,我的所有课程都是这样的 - 这是项目,在C中编写一个执行XYZ的程序,顺便使用GDB调试器.
目前,我正在学习汇编语言课程,而讲师需要使用GDB调试器,我甚至不知道如何在Visual Studio中进行调试.我们即将完成的所有项目都需要我们使用GDB"破解"可执行文件.
任何关于如何开始/学习调试的建议都将受到高度赞赏.
我正在计算信号在C中是如何工作的.这是从旧考试中得到的一个例子:
#include<signal.h>
#include<unistd.h>
#include<stdio.h>
#include<errno.h>
//#include <sys/types.h>
void handler1(int sig) {
printf("Phantom");
exit(0);
}
int main()
{
pid_t pid1;
signal(SIGUSR1, handler1); //installing signal handler
if((pid1 = fork()) == 0) { //forking
printf("Ghost");
exit(0);
}
kill(pid1, SIGUSR1);
printf("Ninja");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,海湾合作委员会给了我两个答案Ghost Ninja
:Ninja Phantom
.它可以生产Ghost Phantom Ninja
或由3个名字组成的任何其他组合?
我看到它可能产生3个名字的一种方法是:Fork,在Child中运行,print Ghost
,exit(0)=>在Parent中,接受/处理信号,从信号处理程序打印Phantom
,杀死子,打印Ninja
.但我不确定我的"理论"是否成立.
还有,会kill(pid1, SIGUSR1)
调用handler()
吗?
谢谢 !
就我而言,两个INT_MAX数字的乘积296447233
是不正确的.
long long int product = 0;
product = 2137483647 * 2137483647;
printf("product: %lli\n", product);
Run Code Online (Sandbox Code Playgroud)
我做错了什么,以及如何纠正它?谢谢 !
(WPF新手)我正在查看WPF示例:
<Window x:Class="Attempt_XAML.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<Label HorizontalAlignment="Center">A Button Stack</Label>
<Button HorizontalAlignment="Left">Button 1</Button>
<Button HorizontalAlignment="Right">Button 2</Button>
<Button Background="#FFA29494">Button 3</Button>
<Button>Button 4</Button>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
MS中的备注说明:
对于StackPanel中包含的内容的HorizontalAlignment和VerticalAlignment,默认值为stretch.
但是,结果看起来与我期望的不同.Button
并且Label
没有垂直伸展,而只是水平伸展(即它们不会填满Window
两个方向的整个空间)为什么?
如何在Rx Vert.X中结束链接请求?
HttpClient client = Vertx.vertx().createHttpClient();
HttpClientRequest request = client.request(HttpMethod.POST,
"someURL")
.putHeader("content-type", "application/x-www-form-urlencoded")
.putHeader("content-length", Integer.toString(jsonData.length())).write(jsonData);
request.toObservable().
//flatmap HttpClientResponse -> Observable<Buffer>
flatMap(httpClientResponse -> { //something
return httpClientResponse.toObservable();
}).
map(buffer -> {return buffer.toString()}).
//flatmap data -> Observable<HttpClientResponse>
flatMap(postData -> client.request(HttpMethod.POST,
someURL")
.putHeader("content-type", "application/x-www-form-urlencoded")
.putHeader("content-length", Integer.toString(postData.length())).write(postData).toObservable()).
//flatmap HttpClientResponse -> Observable<Buffer>
flatMap(httpClientResponse -> {
return httpClientResponse.toObservable();
})......//other operators
request.end();
Run Code Online (Sandbox Code Playgroud)
请注意我有.end()
对于最高要求.我如何结束内部的请求.flatmap
?我甚至需要结束它吗?
我对C/C++中的fork()函数感到困惑.给出以下代码:
void fork2()
{
printf("LO\n");
fork()
printf("L1\n");
fork();
printf("Bye!\n");
}
Run Code Online (Sandbox Code Playgroud)
讲座幻灯片给出了下图
______Bye
___L1|______Bye
| ______Bye
L0|___L1|______Bye
Run Code Online (Sandbox Code Playgroud)
对我来说,这个图没有任何意义.我希望每次调用fork都会导致调用printf("LO\n")
.还是我错了?
准备考试.这不是功课问题.
我认为最坏的情况是O(N ^ 2)来构建BST.(每次插入req N-1比较,你总和所有的比较0 + 1 + ... + N-1~N ^ 2).这是倾斜的BST的情况.
(平衡)BST的插入是O(log N),那么为什么最好的情况是O(N logN)来构造树?
我猜最好的猜测 - 因为单个插入是log N,而不是总结所有插入以某种方式给我们N log.
谢谢 !
std_logic
枚举类型的目的是什么?
'U': uninitialized. This signal hasn't been set yet.
'X': unknown. Impossible to determine this value/result.
'0': logic 0
'1': logic 1
'Z': High Impedance
'W': Weak signal, can't tell if it should be 0 or 1.
'L': Weak signal that should probably go to 0
'H': Weak signal that should probably go to 1
'-': Don't care.
Run Code Online (Sandbox Code Playgroud) 是否有任何平台可以构建GUI平台而无需使用本机C++来使用QT或.NET?
QT很酷,但是花了很多时间学习,此外它还有很多我不需要的东西,并且真的不喜欢QT IDE,与Visual Studio相比(我知道你可以在Visual Studio中使用QT)
.NET遇到了同样的问题(我现在正在学习C#和WPF,虽然看起来WPF更容易编程,你可以从WPF调用本机C++代码)
我正在寻找的东西是:相对容易学习,不必具有高级功能,适用于C++ 11,支持C++ 11多线程,适用于Visual Studio.计划构建一些数值分析应用程序.
我已经问了一个关于fork()的问题,这是另一个问题.给出以下代码:
#include <unistd.h>
#include <stdio.h>
int main()
{
pid_t pid1, pid2;
pid1 = fork();
pid2 = fork();
if (pid1 != 0 && pid2 != 0)
printf("A\n");
if (pid1 != 0 || pid2 != 0)
printf("B\n");
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
在第二个之后fork()
,pid1
&的价值是pid2
什么?
据了解,第一个fork设置pid1 > 0
并且在以后创建的所有子项中都是相同的.然而,会发生什么pid2
?
谢谢 !