如何查看程序中函数间的调用关系?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何查看程序中函数间的调用关系?相关的知识,希望对你有一定的参考价值。

小弟在看一段142个文件的c代码程序,想弄清程序中各个函数之间的调用关系。就是从main函数开始,调用的所有函数,以及这些函数又调用的其它函数。这样一层层往下,最后显示整个项目中所有函数间的调用关系。最好以树图的形式显示。请问有没有什么方法能实现上诉功能,一个一个函数看实在太累了。

参考技术A 最简单的办法就是在main()函数开始设置断点。
F10执行下一步!
F11执行下一步并可进入函数!
你一直按F11就能看见它每一步是调用上面函数了!
参考技术B 设置断点是一个很好用的方法,建议你试试,还有就是学习不能浮躁啊,静下心来一切就会好起来的本回答被提问者采纳

C#中两个窗体间的函数调用

程序中有两个窗口,窗口1中有listview1控件,操作正常,在窗口1中调用窗口2,然后窗口2若干操作后调用窗口1的某个函数如NetPlay(),返回窗口1的NetPlay函数,进入正常(NetPlay中的messagebox能弹出)但是我在操作listview1(如listview1.Items.Clear())的时候无法操作,对程序没有任何的反应,但程序没有报错 也就是说,我进入了从窗口1进入窗口2后,在窗口2中调用窗口1的某个函数,该函数其它一切正常,只是在调用窗口1里面的控件的时候没反应(但也没报错),这是什么原因 相关代码 MiniMedia是窗口1的名字 NetMedia窗口2 MiniMedia某函数() NetMedia Dlg = new NetMedia(); Dlg.ShowDialog(this); 窗口2中 MiniMedia MiniMediaClass = new MiniMedia(); NetMedia某函数() MiniMediaClass.NetPlay();//此函数是窗口1中的 窗口1中的 NetPlay() MessageBox.Show("哈哈");//正常显示 listView1.Items.Clear();//不起作用,不报错,但是在其他函数中使用正常

参考技术A 你已经跨线程调用控件了,当然无作用也不报错。在Form1中调用当然可以,但在Form2中(另一线程)调用就无效。
delegate
ListViewItemClearDelegate();
ListViewItemClearDelegate
_dListViewItemClear;
public
void
Form1_Load()

_dListViewItemClear=new
ListViewItemClearDelegate(ListViewItemClear);

NetPlay()

MessageBox.Show("哈哈");//正常显示
ListViewItemClear();

public
void
ListViewItemClear()

if(listView1.InvokeRequired)

listView1.Invoke(_dListViewItemClea);

else

listView1.Items.Clear();


解决思路就这样,代码没有调试过,只是凭印象写的,你试着编译一下。

以上是关于如何查看程序中函数间的调用关系?的主要内容,如果未能解决你的问题,请参考以下文章

进程(day09)

linux 下查看进程用啥命令

linux 下查看进程用啥命令

如何从托管 WebBrowser 控件的应用程序调用 WebBrowser 控件查看的页面中的 JavaScript 函数?

在mysql中如何查看各表之间的关系图

sql server 中如何查看自定义函数的源代码?